让 ssh -R 转发到同一 IP 但不同端口的两台客户端电脑?

让 ssh -R 转发到同一 IP 但不同端口的两台客户端电脑?

我基本上做过两次相同的 ssh -R 转发,但只有一个能用。以下是我的情况:

在工作中:我想要远程登录的服务器/计算机

在家:台式电脑 笔记本电脑

路由器转发:端口 22 和 49666 到笔记本电脑端口 49667 和 49668 到台式机

出于某种原因,公司的 IT 部门希望我在计算机上使用 ssh -R,而不是正常打开端口(我猜他们担心如果让端口保持打开状态会带来安全问题)。他们允许我这样做是一个很大的让步,我不想再就正常打开端口的问题与他们争论了。所以我在工作中这样做

ssh -R 49666:localhost:22 (home IP) -N   #this is for the laptop

然后,在我的笔记本电脑上,我可以执行以下操作:

ssh localhost -p 49666

我成功进入工作电脑。

在工作中,我也会做:

ssh -R 49668:localhost:49667 (home IP) -N   #this is for the desktop

但是在我的桌面上,如果我尝试

ssh localhost -p 49667

我得到:

ssh: connect to host localhost port 49668: Connection refused

这些命令基本上是类似的,所以我不确定为什么一个有效而另一个无效。我的第一个想法是,由于默认的 ssh 端口是 22,所以我的桌面没有监听 49667。所以我进入 /etc/ssh/sshd_config 并将其更改为监听 49667,但我仍然收到相同的错误。

如果我在办公室电脑前输入:

ssh (home IP) -p 22

我成功登录笔记本电脑。同样,如果我输入

ssh (home IP) -p 49667

我成功登录桌面。因此,我认为这不是桌面上的安全问题,因为我可以从工作服务器进入桌面。

我的第二个想法是,在 ssh -R 命令中,(家庭 IP)部分试图转到家庭 IP 的端口 22,因为工作计算机在默认端口 22 上有 ssh,并且它不知道我将目标计算机设置为查看端口 49667。所以我的下一次尝试是这样的

我进入工作电脑上的 ~/.ssh/config 并输入如下一行:

host Desktop 
hostname (home ip)
port 49667

现在,如果我打开办公电脑并输入

ssh Desktop

它成功登录到桌面,因为它与上面的命令基本相同:

ssh (home IP) -p 49667

因此,我尝试在工作电脑上执行此 ssh -R 行:

ssh -R 49668:localhost:49667 Desktop -N

现在,当我尝试从家里的桌面通过 ssh 进入服务器时,出现以下错误:

ssh_exchange_identification: Connection closed by remote host

这与我之前遇到的故障不同(连接被拒绝,我认为这只是意味着根本没有端口转发)。此外,当我遇到上述故障时,工作服务器上会弹出此故障(我知道,因为我正在用笔记本电脑查看它)

connect_to localhost port 49667: failed.

因此,在这种情况下我得到了一些不同的反应,但仍然没有成功。而且我没有主意了……

所有 3 台计算机(工作计算机、笔记本电脑、台式机)每台都有正确的公钥。

答案1

我想我是在发布问题 15 分钟后才找到答案的,所以我会发布我的解决方案,以防其他人遇到类似的问题……以下命令对我有用

ssh -R 49668:localhost:22 Desktop -N

出于某种原因,我认为第二个端口号(在本例中为 22)应该是目标计算机(配置文件“桌面”下的 IP)监听 ssh 的端口。但这有效,所以我错了。也许它应该是执行 ssh -R 命令的计算机中监听 ssh 的端口?

相关内容