我有一个远程和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。