如何在Linux或Unix服务器上更改ssh端口

时间:2020-01-09 10:40:03  来源:igfitidea点击:

如何使用命令行选项更改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&gt/dev/null"以隐藏查找命令权限被拒绝的消息警告/垃圾邮件。

编辑文件并设置端口选项

执行以下命令:

$ sudo vi /etc/ssh/sshd_config

找到如下所示的行:

Port 22

或者

#Port 22

要将端口设置为2222,请执行:

Port 2222

保存并关闭文件。
请注意,端口号0-1023保留用于各种系统服务。
因此,我建议选择端口号在1024到65535之间。
这是特权服务的常见列表,并被指定为知名端口:

端口协议服务
20tcpftp-data
21tcpftp服务器
22tcpssh服务器
23tcpTelnet服务器
25tcp电子邮件服务器
53tcp/udp域名服务器
69udptftp服务器
80tcpHTTP服务器
110tcp/udpPOP3服务器
123tcp/udpNTP服务器
443tcpHTTPS服务器

使用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]