如何使用SSH通过另一台PC连接到PC


13

我有三台电脑。

PC1PC2在专用LAN上,其中PC1PC2称为192.168.0.2

PC2PC3在另一个LAN上,其中PC2PC3称为192.168.123.101

如何使用SSH 从PC3连接到PC1

是否有类似的东西:

ssh user@192.168.0.2 -via user@192.168.123.101

Answers:


19
ssh -o 'ProxyCommand ssh -W %h:%p user@192.168.123.101'

然后,您可以简单地运行ssh PC1

最好通过使用别名~/.ssh/config

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh -W %h:%p user@192.168.123.101

对于没有-W选项的较旧版本的OpenSSH (我认为这意味着≤5.4),请确保PC2上可以使用netcat并使用

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh user@192.168.123.101 nc %h %p

1
+1是的,我有一个类似的答案stackoverflow.com/questions/1010808/1122282#1122282,但有更多详细信息。
短暂

需要安装netcat
Stefan 2010年

4

使用SSH有一个明确的解决方案:

  1. 在本地计算机上将您的计算机设置~/.ssh/config为具有以下内容:

    host WhatYouWillCallTheConnection
        hostname the.gateway.server.address.com
        user YourUsernameOnTheGateway
    
  2. 在您要连接的网关和终端服务器上,确保本地客户端的公共密钥位于 ~/.ssh/authorized_keys

  3. 在网关计算机上,您需要更改,~/.ssh/authorized_keys以便在指定客户端公钥的行的开头添加强制命令,如下所示:

    command="ssh -A user_name@ServerTheGatewaySees.ButTheClientCant.net" ...yourPublicKey....
    

-A如果您不希望一直发送密码,则是转发代理...

这样,只要您执行类似的操作ssh WhatYouWillCallTheConnection,它将直接通过网关运行,并透明地将您连接到另一侧的服务器。


2
ssh -A如果您不信任网关计算机的管理员,请不要使用。他无法获取您的私钥,但是只要您通过连接到网关ssh -A,他就可以使用转发的代理程序与您连接到其他计算机。
詹德(Jander)

2

端口转发可能会派上用场。
从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  

干杯!


1

2017+(自 v7.3起)的答案是ProxyJump

ssh -J user@jumphost user@destination

,缩写为:

ssh -o "ProxyJump user@jumphost" user@destination

可以ssh dest使用以下~/.ssh/config代码段将其缩短:

Host jump
    User MyJumpHostUser
    Hostname Jump.host.tld

Host dest
    ProxyJump jump
    User MyDestUser
    Hostname des.tin.ati.on

0

我唯一知道的解决方案是使用Belier的 ssh脚本:

Belier允许通过SSH连接在远程计算机上打开外壳或执行命令。Belier的主要特点是在完成这项工作之前,它可以跨越多台中间计算机。

不久前,我在麻省理工学院林肯实验室主页上找到了这个README.sshhop,但是我找不到关于它的更多信息。有人知道更多吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.