获取传入的ssh转发连接端口号

时间:2013-12-03 16:53:12

标签: ssh portforwarding sshd

我有一台服务器将连接转发到一组其他服务器。

在这里,我转发了所有与之相关的连接:

my.tunnel.com:33199到my.server2.com:52222

和..

my.tunnel.com:33200到my.server3.com:52222

..直到

my.tunnel.com:XXXXX到my.serverN.com:52222

我在每台服务器上通过以下命令启动此操作,但隧道my.tunnel.com除外:

ssh -o StrictHostKeyChecking=no -l root -i /etc/ssh/id_rsa -R *:33199:127.0.0.1:22 -p 443 my.tunnel.com 0 33199

...

ssh -o StrictHostKeyChecking=no -l root -i /etc/ssh/id_rsa -R *:XXXXX:127.0.0.1:22 -p 443 my.tunnel.com 0 XXXXX

嗯,这很好用!

但是!

在启动这些命令时,我想在my.tunnel.com上查看my.server2.com希望my.tunnel.com完全从端口33199转发,而不是另一个端口!所以在这一点上我想得到这个端口号。

如果问题仍然不够清楚,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:1)

获取转发端口

环境变量中没有此类信息,因此您必须自行传递:

ssh -R 33199:127.0.0.1:22 my.tunnel.com "export MY_FWD_PORT=33199; my_command"

(my_command是您要在服务器上运行的脚本)。有关传递变量的更多信息 - https://superuser.com/q/163167/93604

获取源端口

查看man ssh(1)中的环境变量SSH_CONNECTION。它的意思是:

source_ip source_port dest_ip dest_port

您可能想要source_port,所以只需获取第二部分:

echo $SSH_CONNECTION | awk '{ print $2 }'

echo $SSH_CONNECTION | cut -d" " -f 2