ssh -R使目标主机接受所有接口上的连接

我有一个远程和NAT后面的SOURCE主机。 我想通过SSH连接到SOURCE从我的家庭networking中的目标主机。 因此,我在SOURCE上发出以下命令:

ssh -R 2222:localhost:22 TARGET -N 

现在从TARGET我可以通过ssh -p 2222 localhost连接到源。 精细

与TABLET在同一个目标networking,我期望这个工作:

 ssh -p 2222 TARGET 

相反,它看起来像TARGET只接受端口2222从本地主机的连接。 以下是目标:

 user@TARGET:~/$ netstat -l | grep 2222 tcp 0 0 localhost:2222 *:* LISTEN tcp6 0 0 localhost:2222 [::]:* LISTEN 

有没有办法让远程端的ssh -R接受来自所有接口的连接?

默认情况下,它只会监听本地主机(环回接口)。 您需要在您的命令中将bind_address指定为0.0.0.0

 ssh -R 0.0.0.0:2222:localhost:22 TARGET -N 

您还需要在目标主机上configurationSSH守护程序,以允许客户端指定bind_address。 默认情况下禁止监听所有接口。 所以,即使您将0.0.0.0指定为bind_address,您也将始终发现它正在环回监听。

您需要在/etc/ssh/sshd_config具有以下行,以允许客户端指定绑定地址。

 GatewayPorts clientspecified 

完成后,您可以在目标机器上使用netstat -lntp进行validation。