如何更改 Linux 或 Unix 服务器上的 ssh 端口
您可以轻松更改 Linux 或 Unix 服务器的 SSH 端口。ssh 端口在 sshd_config 文件中定义。此文件位于/etc/ssh/sshd_config位置。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 流程管理 |
先决条件 | OpenSSH 服务器 |
操作系统兼容性 | *BSD • Linux • macOS • Unix • WSL |
预计阅读时间 | 4 分钟 |
更改 Linux 或 Unix 服务器的 SSH 端口的步骤
- 打开终端应用程序并通过 SSH 客户端连接到您的服务器:
$ ssh {user-name}@{ec2-server-name}
- 通过输入 find 命令来找到sshd_config文件。例如:
$ find / -name "sshd_config" -print
- 编辑 sshd 服务器文件并设置Port选项:
Port 2341
- 保存并关闭文件。
- SELinux用户调整端口权限。
- 重新启动 sshd 服务以更改 Linux 或 Unix 机器中的 ssh 端口。
通过键入以下命令来找到 sshd_config 文件
$ find / -name "sshd_config" 2>/dev/null
示例输出:
/etc/ssh/sshd_config
find 命令尝试定位名为 sshd_config 的 sshd 服务器配置文件。我2>/dev/null在末尾添加了 以隐藏 find 命令权限被拒绝消息 warning/spam。
编辑文件并设置端口选项
键入以下命令:
$ sudo vi /etc/ssh/sshd_config
找到如下行:
Port 22
或者
#Port 22
要将端口设置为 2222,请输入:
Port 2222
保存并关闭文件。请注意,端口号 0-1023 是为各种系统服务保留的。因此,我建议选择 1024 和 65535 之间的端口号。以下是特权服务和指定为知名端口的常见列表:
常见的 TCP 或 UDP 端口
港口 | 协议 | 服务 |
---|---|---|
20 | 传输控制协议 | FTP 数据 |
21 | 传输控制协议 | FTP 服务器 |
22 | 传输控制协议 | ssh 服务器 |
23 | 传输控制协议 | 远程登录服务器 |
二十五 | 传输控制协议 | 电子邮件服务器 |
53 | tcp/udp | 域名服务器 |
69 | UDP协议 | tftp 服务器 |
80 | 传输控制协议 | HTTP 服务器 |
110 | tcp/udp | POP3 服务器 |
123 | tcp/udp | NTP 服务器 |
443 | 传输控制协议 | 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
查看如何使用 ufw 打开 TCP 端口 22以了解更多信息。iptables命令的语法如下:
$ sudo /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT
pf 防火墙的语法如下(FreeBSD/OpenBSD/NetBSD Unix)在您的 pf.conf 中:
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
带有 systemd 的 CentOS/RHEL/Fedora Linux,使用 systecmtl 命令如下:
$ sudo systemctl restart sshd
Ubuntu/Debian/Mint Linux:
FreeBSD Unix,使用服务命令:
$ sudo service ssh restart
# Ubuntu/Debian/Mint Linux with systemd #
$ sudo systemctl restart ssh
$ sudo service sshd restart
如何验证 TCP 端口 2222 是否已打开
使用 netstat 命令或 ss 命令:
ss -tulpn | grep 2222
netstat -tulpn | grep 2222
如何使用命令行使用新的 SSH 端口
语法为:
例如:
使用 man 命令查看 OpenSSH SSH 守护进程配置文件 (sshd_config) 手册页。例如:
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 vivek@server1.example.com
$ man 5 sshd_config
$ man 1 ssh
结论
本页解释了如何在 Linux 和类 Unix 系统上更改 SSH 端口,包括用于连接服务器的 ssh 命令行选项。更改 SSH 服务器端口属于通过隐蔽性实现安全性。我不会这么做。但是,您搜索了更改默认 TCP 端口 22,这就是本页提供的内容。更好的选择是使用防火墙将 SSH 端口访问限制为企业 VPN IP 范围。然后仅允许通过 ssh 密钥进行 ssh 登录访问。有关更多信息,请参阅以下资源:
- 20 个 OpenSSH 服务器最佳安全实践
- 如何在 Linux / Unix 系统上设置 SSH 密钥
- Linux / Unix 用户的 OpenSSH 配置文件示例
- 审计 Linux/Unix 上的 SSH 服务器和客户端配置
- 如何在 FreeBSD 上安装和升级 OpenSSH 服务器
- Ubuntu Linux 安装 OpenSSH 服务器
- 在 Alpine Linux 上安装 OpenSSH 服务器(包括 Docker)
- Debian Linux 安装 OpenSSH SSHD 服务器
- 配置 OpenSSH 以监听 IPv6 地址
- OpenSSH 服务器连接在几分钟不活动后断开
- 在 OpenSSH 身份验证之前显示横幅/消息
- 强制 OpenSSH(sshd)仅监听选定的多个 IP 地址
- OpenSSH 使用 ssh-keygen 命令更改密码
- 重复使用 SSH 连接以通过多路复用加速远程登录过程
- 重新启动 SSHD 服务器之前检查语法错误
- 更改 Linux 或 Unix 服务器上的 ssh 端口
- OpenSSH 拒绝或限制用户和组的访问
- Linux OpenSSH 服务器拒绝 root 用户访问/登录
- 在 Linux 上禁用 ssh 密码登录以提高安全性
- SSH ProxyCommand 示例:通过一台主机到达服务器
- OpenSSH 多路复用器可加速 OpenSSH 连接
- 在远程 Linux / UNIX 服务器中安装 / 附加 SSH 密钥 Authorized_keys
- 使用 ssh-copy-id 与监听不同端口的 OpenSSH 服务器配合使用