我们允许一小群学生用户使用ssh
本地转发连接到我们的服务器,以便访问数据科学/编程资源,例如 Jupyter、rstudio 等。
最近我注意到,学生们在跑步时无法跟踪他们所在的主机ssh
。例如,学生将运行ssh -L foo:localhost:foo host1
,然后在 中host1
,他们运行ssh -L foo:localhost:foo hostN
以连接到host1
我们的另一个主机。这当然会破坏foo
所有其他用户的端口转发,因为现在host
正在监听foo
。
我暂时对主机进行了限制ssh
,以便学生无法ssh
在远程主机上运行客户端。但是,我不能完全排除用户ssh
在某些时候不需要访问权限的情况。
有没有办法(/etc/ssh/ssh_config
也许在)客户端进行配置ssh
以防止用户启动危险命令?例如,我想阻止在foo
上收听host1
。
谢谢
答案1
您无法轻松控制客户端,但可以控制服务器端,定义在/etc/ssh/sshd_config
.禁用所有转发选项并重新启动服务:
DisableForwarding yes
ssh -L
请注意,这消除了使用或 的简单方法ssh -R
,但它并不能阻止某人设置应用程序代理(例如,使用netcat
或socat
)。