SSH session - fixed port on the client side

拟墨画扇 提交于 2020-06-29 08:51:56

问题


Is it possible to set the fixed port on the client side of the connection?

I connect to the ssh-server using port 22 and the client socket is getting random port to identify the session. An example (output from netstat -atn)

tcp4       0      0  <server>.22       <client>.54117    ESTABLISHED

In this example, client gets port 54117. For the test purposes, I'd like a fixed port to be assigned for the client, let's say 40185.

So I'd love the following output:

tcp4       0      0  <server>.22       <client>.40185    ESTABLISHED

Is it even possible?


回答1:


You can do it programmaticaly, but the ssh(1) command doesn't allow to do that. The main reason is that you let the kernel select the client port, so you can open more than one ssh(1) session to the same server from different source ports in the same client machine. If you fix the port number in the client and the server, you cannot distinguish the packets belonging to one connection from the ones belonging to the other (same protocol, tcp, same source address, same dest address, same source port and same destination port)

To do it programmaticaly in a client and fix the local port, just call bind(2) system call to fix it, before doing the connect(2) system call (as the server does just before the accept(2) system call)

Be careful in that you cannot have two connections with the same five parameters (source add, source port, tcp protocol, dest port, dest addr)



来源:https://stackoverflow.com/questions/25481400/ssh-session-fixed-port-on-the-client-side

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!