我有一台服务器将连接转发到一组其他服务器。
在这里,我转发了所有与之相关的连接:
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转发,而不是另一个端口!所以在这一点上我想得到这个端口号。
如果问题仍然不够清楚,请告诉我。
谢谢!
答案 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