怎么修改服务器sftp端口?

1、连接到服务器:使用您现有的 SSH 连接方式登录到服务器。

2、备份配置文件:在进行任何修改之前,先备份 SSH 配置文件,这是一个好习惯。

3、修改 SSH 配置文件:编辑/etc/ssh/sshd_config 文件,更改Port 指令。

4、配置防火墙:开放新的端口,并(可选)关闭旧端口的访问。

5、重启 SSH 服务:使配置生效。

6、测试新端口:使用新的端口进行连接测试,确保修改成功。

7、(可选)禁用旧端口:在确认新端口工作正常后,可以禁用默认的 22 端口。

下面是详细的步骤说明,请根据您的服务器操作系统(如 CentOS、Ubuntu 等)进行操作,它们基本相同。

**详细步骤

**第 1 步:连接到服务器

使用您当前的 SSH 客户端连接到服务器。

ssh username@your_server_ip -p 22

第 2 步:备份 SSH 配置文件

在修改之前,先备份原始配置文件,以防万一需要回退。

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

第 3 步:修改 SSH 配置文件

使用文本编辑器(如vim,nano)打开 SSH 服务端配置文件。

sudo vim /etc/ssh/sshd_config
或者
sudo nano /etc/ssh/sshd_config

在文件中找到#Port 22 这一行,它很可能被注释掉了(以# 开头)。

取消注释并修改删除# 号,并将22 改为您想要的新端口号,端口号范围是 1-65535,建议使用 1024 以上的端口,避免与系统服务冲突。

    Port 22
    Port 2222

*注意:您可以配置多个Port 行来同时监听多个端口,在过渡期,这是一个安全的做法,可以确保您不会意外锁死自己。

修改前:

What ports, IPs and protocols we listen for
Port 22

修改后:

What ports, IPs and protocols we listen for
Port 22
Port 2222

*(这是一个过渡配置,同时监听 22 和 2222 端口)

最终配置(确认新端口可用后):

What ports, IPs and protocols we listen for
Port 2222

*(只监听新的 2222 端口)

重要安全提示:在测试新端口成功之前,不要立即删除Port 22 这一行,否则如果新端口配置失败,您将无法远程连接到服务器。

**第 4 步:配置防火墙

根据您服务器使用的防火墙软件,开放新的端口。

如果使用ufw (常见于 Ubuntu/Debian):

sudo ufw allow 2222
sudo ufw reload

如果使用firewalld (常见于 CentOS/RHEL):

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload

如果使用iptables

sudo iptables -I INPUT -p tcp --dport 2222 -j ACCEPT
然后保存 iptables 规则,命令因系统而异,
sudo service iptables save  # 对于 CentOS 6
或者使用 iptables-persistent (Ubuntu)

**第 5 步:重启 SSH 服务

让 SSH 服务重新加载新的配置。

对于 Systemd 系统 (CentOS 7+, Ubuntu 16.04+)
sudo systemctl restart sshd
在某些系统上,服务名可能是 'ssh'
sudo systemctl restart ssh
对于 SysVinit 系统 (CentOS 6, Ubuntu 14.04)
sudo service sshd restart
或者
sudo service ssh restart

**第 6 步:测试新端口连接

非常重要! 不要关闭当前的 SSH 会话,打开一个新的终端窗口,尝试使用新端口连接到服务器。

ssh username@your_server_ip -p 2222

请将2222 替换为您在步骤 3 中设置的实际端口号。

如果能够成功登录,说明新端口配置正确。

第 7 步:(可选)移除旧端口并最终配置

在确认新端口工作完全正常后,您可以返回服务器,再次编辑/etc/ssh/sshd_config 文件,将Port 22 那一行删除或注释掉,只保留新端口。

Port 2222

再次重启 SSH 服务。

sudo systemctl restart sshd

从防火墙中移除对旧端口 22 的允许规则(增强安全)。

对于 ufw
sudo ufw deny 22
对于 firewalld
sudo firewall-cmd --permanent --remove-service=ssh
或者明确移除端口
sudo firewall-cmd --permanent --remove-port=22/tcp
sudo firewall-cmd --reload

**重要注意事项和最佳实践

1、不要锁死自己:确保在测试新端口成功之前,始终保持一个活动的 SSH 会话(使用旧端口 22),这样如果新端口配置失败,您还可以通过旧会话进行修复。

2、选择端口号:选择一个在 1024 到 65535 之间、不常用的端口,您可以使用netstatss 命令检查端口是否已被占用:sudo ss -tulpn | grep :2222

3、云服务器用户:如果您使用的是 AWS、Google Cloud、Azure 等云服务商,您还需要在云平台的安全组(Security Group)或防火墙规则中,添加入站规则,允许您的新端口(2222)的 TCP 流量。

4、SELinux:如果您使用的是 CentOS/RHEL 并且启用了 SELinux,SSH 默认只能使用预定义的端口,如果您使用非标准端口,需要告诉 SELinux:

    sudo semanage port -a -t ssh_port_t -p tcp 2222

(如果semanage 命令不存在,您可能需要安装policycoreutils-python-utils 包)。

1. 备份
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
2. 编辑配置 (同时保留22和新端口2222用于测试)
sudo vim /etc/ssh/sshd_config
添加或修改为: Port 22 和 Port 2222
3. 配置防火墙 (以 ufw 为例)
sudo ufw allow 2222
sudo ufw reload
4. 重启服务
sudo systemctl restart sshd
5. 【在新终端测试】 ssh username@server_ip -p 2222
6. 测试成功后,返回服务器,编辑配置,只保留新端口
sudo vim /etc/ssh/sshd_config
修改为: Port 2222
7. 再次重启服务并关闭旧端口防火墙
sudo systemctl restart sshd
sudo ufw deny 22

完成以上所有步骤后,您的服务器 SFTP/SSH 端口就已经成功修改了,以后所有 SFTP 和 SSH 连接都需要使用新的端口号。

文章摘自:https://idc.huochengrm.cn/fwq/16942.html

评论