我有三电脑。
电脑1和电脑2位于专用 LAN 上,其中电脑1众所周知电脑2作为192.168.0.2
电脑2和电脑3在另一个 LAN 上,其中电脑2众所周知电脑3作为192.168.123.101
我怎样才能连接到电脑1从电脑3通过 SSH。
有没有类似的东西:
ssh [email protected] -via [email protected]
答案1
ssh -o 'ProxyCommand ssh -W %h:%p [email protected]'
然后你就可以简单地运行ssh PC1
。
最好通过别名使用~/.ssh/config
:
Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh -W %h:%p [email protected]
对于没有该-W
选项的旧版本 OpenSSH(我认为这意味着 ≤5.4),请确保网猫可在 PC2 上使用
Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh [email protected] nc %h %p
答案2
使用 SSH 有一个明确的解决方案:
在您的本地计算机上进行设置,
~/.ssh/config
使其具有以下内容:host WhatYouWillCallTheConnection hostname the.gateway.server.address.com user YourUsernameOnTheGateway
在您想要连接的网关和终端服务器上,确保您的本地客户端的公钥位于
~/.ssh/authorized_keys
在网关计算机上,您需要进行更改
~/.ssh/authorized_keys
,以便在指定客户端公钥的行的开头添加强制命令,如下所示:command="ssh -A [email protected]" ...yourPublicKey....
-A
如果您不喜欢一直发送密码,则可以转发代理...
这样,每当您执行类似操作时,ssh WhatYouWillCallTheConnection
它都会直接通过网关并将您透明地连接到另一侧的服务器。
答案3
端口转发可能会派上用场。
从 PC1:
~# ssh -fN -L 22:PC3:7777 -l <user> PC2
7777 可以是任何端口(只要它尚未被使用)。我只是喜欢这个数字,加上我可以通过 +1 管理的任何“订购”(7778、7779 等)。
完成此操作后,您将拥有一条从 PC1 的本地端口 7777 到 PC3 的端口 22 的“透明”隧道。只需发出:
~# ssh -l <user> -p 7777 localhost
而且你应该在 PC3 上。
如果您希望建立 SOCKS 代理,还可以使用 -D 动态转发端口。
~# ssh -D <someport> -fN -L 22:PC3:7777 -l <user> PC2
干杯!
答案4
我知道的唯一解决方案是 ssh 脚本贝利尔:
Belier 允许通过 SSH 连接在远程计算机上打开 shell 或执行命令。 Belier 的主要特点是它能够在完成任务之前跨越多个中间计算机。
不久前我发现了这个自述文件.sshhop在麻省理工学院林肯实验室主页上,但我无法找到任何进一步的信息。有人知道更多吗?