如何在Linux或Unix服务器上更改ssh端口
如何使用命令行选项更改Linux或Unix服务器的SSH端口?
您可以轻松地为Linux或Unix服务器更改SSH端口。
sshd_config文件中定义的ssh端口。
该文件位于/etc/ssh/sshd_config
位置。
更改Linux或Unix服务器的SSH端口的过程
- 打开终端应用程序,然后通过SSH连接到服务器。
- 通过执行find命令找到sshd_config文件。
- 编辑sshd服务器文件并设置"端口"选项。
- 保存并关闭文件
- 重新启动sshd服务以更改Linux中的ssh端口。
通过执行以下命令找到sshd_config文件
$ find / -name "sshd_config" 2>/dev/null
输出示例:
/etc/ssh/sshd_config
find命令尝试找到名为sshd_config的sshd服务器配置文件。
我在末尾添加了" 2>/dev/null"以隐藏查找命令权限被拒绝的消息警告/垃圾邮件。
编辑文件并设置端口选项
执行以下命令:
$ sudo vi /etc/ssh/sshd_config
找到如下所示的行:
Port 22
或者
#Port 22
要将端口设置为2222,请执行:
Port 2222
保存并关闭文件。
请注意,端口号0-1023保留用于各种系统服务。
因此,我建议选择端口号在1024到65535之间。
这是特权服务的常见列表,并被指定为知名端口:
端口 | 协议 | 服务 |
---|---|---|
20 | tcp | ftp-data |
21 | tcp | ftp服务器 |
22 | tcp | ssh服务器 |
23 | tcp | Telnet服务器 |
25 | tcp | 电子邮件服务器 |
53 | tcp/udp | 域名服务器 |
69 | udp | tftp服务器 |
80 | tcp | HTTP服务器 |
110 | tcp/udp | POP3服务器 |
123 | tcp/udp | NTP服务器 |
443 | tcp | HTTPS服务器 |
使用cat命令/grep命令/egrep命令查看Internet网络服务列表:
cat /etc/services less /etc/services more /etc/services grep -w '22/tcp' /etc/services grep SSH /etc/services grep -w '80/tcp' /etc/services egrep -w '(80|443|110|53)/tcp' /etc/services
在Linux中查看或选择新的SSH端口号
关于SELinux用户的说明
您必须执行以下命令才能将端口更改为2222:
# semanage port -a -t ssh_port_t -p tcp 2222
更新防火墙以在Linux中接受ssh端口2222
如果在Ubuntu/Debian Linux上使用UFW,请执行:
$ sudo ufw allow 2222/tcp
iptables的语法如下
$ sudo /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT
pf防火墙的语法在pf.conf中如下(FreeBSD/OpenBSD/NetBSD Unix):
pass log on $ext_if proto tcp to any port 2222 keep state
要打开新端口,请使用FirewallD在Fedora/CentOS/RHEL/Oracle Linux上运行以下命令
$ sudo firewall-cmd --permanent --zone=public --add-port=2222/tcp $ sudo firewall-cmd --reload
警告:您必须更新防火墙设置以接受新端口。
否则,以下命令将锁定您的ssh访问。
重新启动sshd服务
在CentOS/RHEL/Fedora Linux上执行以下命令:
$ sudo service sshd restart
或者,如果您将CentOS/RHEL/Fedora Linux与systemd一起使用:
$ sudo systemctl restart sshd
或者,如果您使用的是Ubuntu/Debian/Mint Linux:
$ sudo service ssh restart
或者,如果您将Ubuntu/Debian/Mint Linux与systemd配合使用:
$ sudo systemctl restart ssh
或者,如果您使用的是FreeBSD Unix,请执行:
$ sudo service sshd restart
如何验证TCP端口2222是否已打开
使用netstat命令或ss命令:
ss -tulpn | grep 2222 netstat -tulpn | grep 2222
如何通过命令行使用新的SSH端口
语法为:
ssh -p {port} user@server sftp -P {port} openssh-server scp -P {port} source target scp -P {port} /path/to/foo user@server:/dest/
例如:
ssh -p 2222 [email protected]