我有以下设置。
本地 -- 服务器A -- 服务器B
我需要从本地 scp、ssh 到 B。我现在要做的是 scp/ssh 到 A,然后从 A 到 BI,我想知道如何设置端口转发,这样我就可以 ssh 到特定端口,然后直接到达服务器 B
答案1
这听起来像是反向 SSH 隧道的工作。
服务器 B 位于您无法控制的 NAT 或防火墙后面的网络上。在这种情况下,路由器上的端口转发是不可能的。
2021 年更新:改用 ProxyCommand 或 ProxyJump 选项:https://www.redhat.com/sysadmin/ssh-proxy-bastion-proxyjump
代理命令:
将以下内容添加到您的 ssh 配置中~/.ssh/config
:
Host server-b
ProxyCommand ssh user@server-a -W %h:%p
您甚至可以在命令行上执行以下操作:
ssh -o ProxyCommand="ssh -W %h:%p server-a" server-b
代理跳转:
SSH 7.3 及更高版本具有-J
以下标志ProxyJump
:
ssh -J user@<server-a:port> <user@server-b:port>
原始答案:
在反向隧道中,您通过可公开访问的 A 将连接隧道传输到 B。为此,您从 B 到 A 进行 SSH 连接,并在命令行上指定端口转发。
ssh user@server-a -L 2222:server-b:22 -fN
然后从本地 -> A 使用指定转发端口的 SSH:
ssh -p2222 server-b-user@localhost
...它会将您连接到服务器 B。
资料来源: https://www.redhat.com/sysadmin/ssh-proxy-bastion-proxyjump(2021)
http://www.revsys.com/writings/quicktips/ssh-tunnel.html
autossh
如果您想自动创建并保持打开连接,您可能还需要使用。
http://www.ubuntugeek.com/automatically-restart-ssh-sessions-and-tunnels-using-autossh.html