SSH 有两层含义:
一是 SSH(Secure Shell),由 IETF 的网络小组(Network Working Group)所制定的应用层安全外壳协议,用于专为远程登录会话和其他网络服务提供安全性的协议。
二是基于 SSH 协议实现的远程登录工具。服务端程序为 sshd,客户端为 ssh 命令。
因此 SSH 的默认端口配置分为服务端与客户端。
1.SSH 服务端默认端口配置
(1)登录服务器,打开 sshd_config 文件。
vi /etc/ssh/sshd_config
(2)找到 Port 22,在下方插入一行想要的端口号,注意不要跟现有端口号重复。
...
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
Port 22
Port 3000
...
SSH 服务程序默认监听端口是 22,为了防止因为各种权限和配置问题,导致 22 端口不能访问,上面保留了 22 端口,等新配置的端口生效,再关闭 22 端口。
(3)重启 SSH 服务。
systemctl restart sshd
(4)尝试通过新端口远程登录,或者进入该服务器直接本地访问SSH。
ssh -p3000 root@14.17.22.32
如果成功,说明端口 3000 已经完全可以使用了,接下来可以根据上述步骤把 sshd_config 的 Port 22 注释掉即可。
2.SSH 客户端默认端口配置
SSH 可以从用户级配置文件和系统级配置文件中获取更多的配置数据,这样我们可以在使用 SSH 时省掉很多繁杂的命令选项。使用 ssh 命令进行远程登录时,实际上可以不使用 -p 选项显示指明端口,我们可以通过配置文件的方式来设置 ssh 命令默认端口。实际上 ssh 获取配置数据会以下面的顺序进行:
1.command-line options
2.user's configuration file (~/.ssh/config)
3.system-wide configuration file (/etc/ssh/ssh_config)
因此更改配置文件 ~/.ssh/config
或 /etc/ssh/ssh_config
的 Port 选项即可。
...
Port 3000
...
关于 SSH 客户端配置文件的内容说明,具体参见 ssh_config(5),使用命令man 5 ssh_config
即可打开。
参考文献
[1]修改ssh默认端口
[2]ubuntu.ssh
[3]ubuntu.ssh_config