通过 ssh 建立 ssh 隧道

通过 ssh 建立 ssh 隧道

我遇到过这样的情况:我的 Linux 桌面上有一个在 VirtualBox 下运行的 Windows 10 虚拟机。该虚拟机(目前只有该虚拟机)可以建立到远程办公室的 VPN 隧道。

我目前有一个小型树莓派 - 目前位于我的本地网络上,我定期从我的 Linux 桌面 ssh 进入它,并且我也可以,一旦 ssh 进入,可以从 pi 回到我的 Linux 桌面进行拉取一个 git 存储库。我还可以从我的 Windows 机器 ssh 到 pi(使用 git bash)。

这意味着 linux 和 pi 都运行 sshd,但 windows 不运行

我很快就会将 pi 移动到这个远程办公室,并且我想设置一个可以通过 ssh 往返于这个位置的 pi 和我的 Linux 桌面的环境。

所以我的想法是使用Windows客户端建立一个ssh隧道。因此,作为一个实验,仍然是在我的 Windows 机器上的本地环境中进行的

ssh -L 9001:pi:22 pi@pi(对于本例,pi 也是 pi 上的本地用户)。我假设这会将流量从端口 9001 转发到 pi 上的 sshd 服务器。

然后在我的 Linux 桌面上,我ssh -l pi -p 9001 win期望现在可以 ssh 进入 pi。

但它只是挂了。

我究竟做错了什么?

答案1

你能成功地ssh -l pi -p 9001 win从你的windows盒子里做吗?如果你尝试呢ssh -l pi -p 9001 127.0.0.1

如果您可以执行后者,但无法在 Linux 机器上执行相同的操作,则问题可能是您仅在本地监听端口 9001。请查看 ssh 的手册页,特别是-L [bind_address:]port:host:hostport.要在公共端侦听端口 9001,您可以按如下方式设置隧道:ssh -L *:9001:pi:22 pi@pi

答案2

如果我没看错的话,您想通过主机 B 上运行的 SSH 守护进程从主机 A 到主机 C 进行 SSH 吗?

.ssh/config这可以通过主机 A 上的文件中的一些小技巧来完成:

Host hostc
   HostName hostb
   ProxyCommand ssh username@hostc nc %h %p 2>/dev/null

.ssh/config通过主机 A 上的此节,您可以ssh hostc并且将通过主机 B 上的连接进行代理。

如果主机 A 是你的 Windows 机器,cygwin 的 openSSH 客户端可以做到这一点;我不知道如何在 PuTTY 等中复制此内容。

相关内容