ssh 到网络中的特定机器

Mor*_*rty 4 ssh scp sshfs

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

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

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

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

slm*_*slm 5

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

Host internal-host
    User sam
    IdentityFile ~/.ssh/id_rsa
    ProxyCommand ssh user@gateway nc internal-host.somedom.com %p
Run Code Online (Sandbox Code Playgroud)

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

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

Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
Run Code Online (Sandbox Code Playgroud)

很多主机

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

Host host1 host2 host3
  User          internal-user
  ProxyCommand  ssh external-user@gateway.hostname.tld nc %h %p
Run Code Online (Sandbox Code Playgroud)

这将允许您ssh host1从您的系统连接到主机 1。

参考