ssh 到网络中的特定机器

ssh 到网络中的特定机器

我经常通过 传输文件和操作程序ssh,并且经常在家中进行。我通常使用的机器是工作中的台式机,ssh除非我已经连接到部门网络,否则我无法直接使用它。因此,如果我在家,我必须ssh先连接到我部门的网络,然后再连接到我的桌面,即

ssh username@departmentnetwork进而 ssh username@desktop-departmentnetwork

此设置意味着,如果我要从家里传输文件,我必须将scp文件传输到部门网络上的驱动器,ssh再传输到部门网络,然后scp将文件再次传输到我的桌面。

有没有办法使用 、 、 和 中的任何一个或全部sshscp连接sshfs到“网络中的网络”?

答案1

您可以使用ProxyCommand您可以设置的ssh方式,使其连接到“网关”系统,然后连接到“网关”系统后面的辅助系统。

Host internal-host
    User sam
    IdentityFile ~/.ssh/id_rsa
    ProxyCommand ssh user@gateway nc internal-host.somedom.com %p

该技术利用该工具nc充当连接器。这篇文章详细介绍了它的工作原理:透明多跳 SSH

我使用的另一个技巧是在我的设置中添加一个ControlMaster,这样一旦我通过身份验证,我就可以“回收”它,而不必继续重新验证其他连接。

Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p

很多主机

如果您有多个内部主机,您可以使用文件中可用的特殊变量~/.ssh/config来获取主机名 ( %h) 和端口 ( %p)。

Host host1 host2 host3
  User          internal-user
  ProxyCommand  ssh [email protected] nc %h %p

这将允许您ssh host1从系统连接到 host1。

参考

答案2

@slm建议的方法是一个好方法。如果你想学习另一种方法,也可以通过 ssh 隧道来完成:

ssh -t -l gatewayuser -L9997:127.0.0.1:9998 gatewayserver "ssh -l serveruser -D9998 -N internalserver"

请忽略糟糕的图表:)

在此输入图像描述

相关内容