是否可以在连接的客户端设置固定端口?
我使用端口22连接到ssh服务器,客户端套接字获取随机端口来标识会话。
tcp4 0 0 <server>.22 <client>.54117 ESTABLISHED
字符串
在这个例子中,客户端获得端口54117。为了测试的目的,我想为客户端分配一个固定的端口,比如40185。
所以我喜欢下面的输出:
tcp4 0 0 <server>.22 <client>.40185 ESTABLISHED
型
有可能吗?
2条答案
按热度按时间0wi1tuuw1#
你可以通过编程来实现,但是**ssh(1)命令不允许这样做。主要原因是你让内核选择客户端端口,这样你就可以在同一台客户端机器上从不同的源端口打开多个到同一台服务器的ssh(1)会话。如果你在客户端和服务器端都固定了端口号,你不能区分属于一个连接的数据包和属于另一个连接的数据包(相同的协议,tcp,相同的源地址,相同的dest地址,相同的源端口和相同的目的端口)
要在客户端中以编程方式执行此操作并修复本地端口,只需在执行connect(2)系统调用之前调用bind(2)系统调用来修复它(就像服务器在执行accept(2)**系统调用之前所做的那样)
请注意,您不能有两个具有相同五个参数(source add,source port,tcp protocol,dest port,dest addr)的连接。
gorkyyrv2#
以下是解决方法:(来源于https://serverfault.com/a/920028)
ssh -o 'ProxyCommand nc -p 12345% h %p' email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)