可能重复:
多跳 SSH 隧道…
设置如下:
桌面:我的桌面。我有 root 权限,可以做任何我想做的事情。Kubuntu 10.04。
堡垒:仅允许端口 22 上的入站 SSH 连接的堡垒主机。我不控制此服务器。我无法在此服务器上的任何地方写入文件。我唯一可用的命令是ssh
和 shell (bash) 内置命令。CentOS。
服务器:我想要检索服务器上的一个文件(即复制到桌面)。仅允许来自堡垒。不允许传出 ssh 连接。CentOS。
我可以从桌面到堡垒,然后从堡垒到服务器我可以在 B 上设置 SSH 隧道,如下所示:
ssh -fNL 30000:localhost:22 server
然后下面允许我连接到服务器从堡垒:
bastion % ssh localhost -p 30000
但这不起作用(堡垒拒绝连接):
desktop % ssh bastion -p 30000
我想知道是否有办法将 ssh 会话从桌面到堡垒进入本地连接到端口 30000 的隧道堡垒,这样我就可以通过这个连接到达服务器如果堡垒允许高端口上的传入连接,我可以这样做,但它不允许,只有端口 22。
我知道还有其他选择:我可以将目标文件放到我的屏幕上并在本地保存,但这是一种黑客行为(如果文件中有二进制数据则很烦人)。
编辑:我想出了一个愚蠢的解决方案:
bastion % ssh server "cat filename1" | ssh localhost "cat > filename2"
这有效,尽管 ssh 提示(您确定要连接吗,是/否?和密码)互相干扰,因此您必须按正确的顺序输入“是”和各种主机密码。但如果我可以通过隧道连接到服务器从桌面。
答案1
desktop
首先,连接到堡垒并从->建立隧道bastion
ssh -L 30000:localhost:30000 bastion
现在通过运行以下命令设置从bastion
-> 的隧道server
bastion
ssh -L 30000:localhost:22 server
现在您可以sftp server:30000:/path/to/the/file/you/want.txt
将文件拉到当前目录中。
前两个命令可以简化,只需
ssh -L 30000:localhost:30000 bastion ssh -L 30000:localhost:22 server
从桌面运行即可思考。
编辑:
尝试ssh -L 30000:server:22 bastion