比如我在某台机器使用如下命令可以登录成功:
ssh root@9.77.9.126
我知道远端服务器9.77.9.126的ssh服务监听的端口是36000,通过配置文件/etc/ssh/sshd_config可以查看:
#Port 22
Port 36000
问题:为什么我使用ssh命令登录时,不使用-p选项指明端口,也可以登录成功。ssh命令,即ssh客户端是如何知道远端服务器监听的端口是36000的?
为什么CSDN没有自答的功能呢?该问题的答案是:
未指明端口和用户名,则分别由配置文件 ~/.ssh/ssh_config 和 /etc/ssh/ssh_config 中的 Port 和 User 选项决定。如果配置文件未指定,则端口默认为 22 ,用户名默认为当前用户。
参考:https://dablelv.blog.csdn.net/article/details/104616612
你修改完配置文件 重启ssh了吗 你可以netstat -pan|grep port 看一下 你要指定的端口是否被打开。如果没有执行
systemctl restart sshd.service命令。再试试
ssh 客户端不可能知道服务器端监听的端口。
直接ssh root@9.77.9.126 就是走tcp 22端口,代码里写死了。
你能直接ssh 登陆,说明服务器目前生效的就是22这个端口。你看到的/etc/ssh/sshd_config 里面配置的是36000说明必然是没有配置生效。
你可以sudo netstat -anp|grep sshd 看一下当前肯定是在22端口上listen的,而不是3600,要想3600生效,sshd进程必须至少要重启一下
因为linux 服务的配置修改后需要重启服务才生效