Python脚本批量修改VPS海外服务器SSH端口指南
文章分类:技术文档 /
创建时间:2026-01-10
在管理VPS海外服务器的日常工作中,提升安全性是关键环节。SSH(安全外壳协议)作为远程管理的核心工具,其默认端口22是攻击者的重点目标。将SSH端口修改为非默认值,能有效降低被暴力破解的风险。当管理多台VPS海外服务器时,逐台手动修改端口效率低下且易出错,通过Python脚本实现批量操作成为更优选择。
VPS海外服务器SSH端口修改的必要性
网络攻击中,扫描默认端口是常见手段。SSH服务若长期使用22端口,攻击者可通过端口扫描快速定位目标,进而尝试暴力破解账号密码。修改为自定义端口(如2222、2223等)后,攻击成本显著增加,能大幅提升服务器安全性。对于拥有10台以上VPS海外服务器的用户,手动登录每台服务器修改配置文件并重启服务,不仅耗时,还可能因输入错误导致配置失效,自动化脚本的需求尤为迫切。
Python脚本实现批量修改的核心步骤
实现批量修改需完成三个关键动作:建立远程连接、修改配置文件、重启服务生效。这里选用paramiko(Python的SSH客户端库)作为工具,通过SSH协议远程执行命令。
首先安装依赖库,在终端输入:
pip install paramiko
以下是完整的Python脚本示例:
import paramiko
def modify_ssh_port(host, original_port, username, password, new_port):
try:
# 初始化SSH客户端并建立连接
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(host, port=original_port, username=username, password=password)
# 修改sshd_config中的端口配置
update_cmd = f"sed -i 's/^#*Port 22/Port {new_port}/' /etc/ssh/sshd_config"
_, stdout, stderr = ssh_client.exec_command(update_cmd)
if stdout.channel.recv_exit_status() != 0:
print(f"{host} 配置修改失败:{stderr.read().decode()}")
ssh_client.close()
return
# 根据系统类型重启SSH服务
os_check = ssh_client.exec_command("cat /etc/os-release")[1].read().decode().lower()
restart_cmd = "service ssh restart" if "ubuntu" in os_check else "systemctl restart sshd"
_, stdout, stderr = ssh_client.exec_command(restart_cmd)
if stdout.channel.recv_exit_status() == 0:
print(f"{host} 成功修改SSH端口为 {new_port}")
else:
print(f"{host} 服务重启失败:{stderr.read().decode()}")
ssh_client.close()
except paramiko.AuthenticationException:
print(f"{host} 认证失败,请检查账号密码")
except paramiko.SSHException as e:
print(f"{host} SSH连接异常:{str(e)}")
except Exception as e:
print(f"{host} 执行过程中出错:{str(e)}")
# 配置待操作的服务器列表(示例)
server_list = [
{"host": "vps1.example.com", "port": 22, "user": "admin", "pass": "SecurePass123", "new_port": 2222},
{"host": "vps2.example.com", "port": 22, "user": "admin", "pass": "SecurePass456", "new_port": 2223}
]
# 遍历执行批量修改
for server in server_list:
modify_ssh_port(
server["host"],
server["port"],
server["user"],
server["pass"],
server["new_port"]
)
脚本关键功能解析
1. 远程连接模块:通过paramiko的SSHClient类建立安全连接,AutoAddPolicy策略自动处理未知主机密钥,避免手动确认。
2. 配置修改逻辑:使用sed命令精准匹配sshd_config中的端口行(支持带#注释的默认行),替换为新端口号,确保兼容性。
3. 服务重启适配:通过读取/etc/os-release判断操作系统类型,Ubuntu/Debian使用service命令,CentOS/RHEL使用systemctl,确保不同发行版均能正确重启。
操作注意事项与扩展建议
- 连接验证:执行脚本前,需确认本地网络能正常访问所有VPS海外服务器的22端口,避免因网络问题导致连接失败。
- 权限检查:远程账号需具备sudo权限或直接使用root用户,确保能修改/etc/ssh/sshd_config并重启服务。
- 防火墙更新:修改端口后,需在服务器安全组或防火墙中开放新端口(如2222),同时关闭原22端口的外部访问,否则将无法通过新端口连接。
- 批量测试:完成修改后,建议使用脚本中的连接逻辑反向验证新端口是否可正常登录,避免配置错误导致管理中断。
通过Python脚本批量调整VPS海外服务器的SSH端口,既能提升操作效率,又能降低人为失误风险,是多服务器管理场景下的实用技巧。结合定期更换端口、使用密钥登录等措施,可进一步强化服务器安全防护体系。
工信部备案:苏ICP备2025168537号-1