我经常通过ssh
和经常在家中传输文件和操作程序。我通常使用的机器是工作中的台式机,ssh
除非我已经连接到部门网络,否则我无法直接使用它。因此,如果我在家,我必须ssh
先到我部门的网络,然后再到我的桌面,即
ssh username@departmentnetwork
进而
ssh username@desktop-departmentnetwork
这个设置意味着如果我要从家里传输文件,我必须scp
将文件传输到我在部门网络上的驱动器ssh
,再到部门网络,然后再将scp
文件传输到我的桌面。
有没有办法使用ssh
、scp
、 中的任何一个或全部并sshfs
连接到“网络中的网络”?
您可以使用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。
归档时间: |
|
查看次数: |
620 次 |
最近记录: |