因此,我设置了一个脚本,用于自动打开与我服务器的 SSH 连接,并将端口反向转发给我,以便与我的家庭桌面建立 SSH 连接。在我迁移服务器之前,这个脚本一直有效。
简而言之,我无法让这个连接绑定到外部 IP 地址,但我不知道为什么。
该脚本基本上运行这个命令(我可以确认,从 shell 运行时,这个命令加上我的值会产生相同的结果):
sudo autossh -M 5114 -D 7474 -R servers_public_ip:2695:localhost:22 -i /home/user/.ssh/id_rsa2 remote@servers_public_ip
当我检查时lsof
,我看到为用户绑定了以下连接remote
:
sshd 27570 remote 3u IPv4 161761 0t0 TCP servers_public_ip:22->67-213-103-227.eastlink.ca:62812 (ESTABLISHED)
sshd 27570 remote 7u IPv6 161773 0t0 TCP ip6-localhost:5114 (LISTEN)
sshd 27570 remote 8u IPv4 161774 0t0 TCP localhost:5114 (LISTEN)
sshd 27570 remote 9u IPv6 161777 0t0 TCP ip6-localhost:2695 (LISTEN)
sshd 27570 remote 10u IPv4 161778 0t0 TCP localhost:2695 (LISTEN)
除了我通过 ssh 连接到服务器以运行 lsof 之外,这些绑定都不在服务器的公共 IP 上。这在我的旧服务器上运行良好。我检查了 sshd_config 并AllowTcpForwarding
明确启用了它。我没什么主意了。
答案1
我讨厌这种情况发生,但经过进一步研究后,我能够回答我自己的问题了。
似乎sshd_config
需要GatewayPorts yes
绑定到外部地址。我在移植配置时一定错过了这一点。
答案2
为了使其绑定到所有接口,请使用:
ssh -N -R 0.0.0.0:2695:localhost:22 [email protected]
不要忘记编辑/etc/ssh/sshd_config
并转到GatewayPorts
和使能够并将其设置为yes