在保障服务器安全时,许多用户会选择更改SSH(Secure Shell)的默认端口,以降低被暴力破解的风险。常见做法是编辑 /etc/ssh/sshd_config
文件,将 Port 22
修改为其他不常用的端口号,然后通过命令 /etc/init.d/ssh restart
重启SSH服务,使配置生效。
不过,仅仅更换端口并不能从根本上杜绝安全隐患。更稳妥的方法,是采用密钥认证方式登录,并彻底关闭密码登录功能。这一流程大致分为以下几个步骤:
1. 生成密钥对
首先,需要在服务器上生成一对公私钥。以root身份执行如下命令:
ssh-keygen -t rsa
系统会提示你输入保存路径,直接回车即可使用默认位置(通常为 /root/.ssh/id_rsa
)。接下来可以设置一个密码短语,也可留空。完成后,会在 .ssh
目录下生成 id_rsa
(私钥)和 id_rsa.pub
(公钥)。
2. 导入公钥
将刚才生成的公钥内容追加到授权文件中:
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
这样,只有拥有对应私钥的人才能通过SSH连接该账户。
3. 配置 SSH 服务支持密钥认证
编辑 /etc/ssh/sshd_config
文件,确保以下三行没有注释符号“#”,并且值均为yes或正确路径:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
保存后,再次重启SSH服务使修改生效。
4. 客户端适配注意事项
如果你使用的是Putty客户端,由于其不识别标准的OpenSSH格式私钥,需要借助Puttygen工具将 id_rsa
转换成 .ppk
格式再导入。如果使用Xshell等支持OpenSSH密钥格式的软件,则无需转换,可直接加载原始私钥文件。
5. 禁用密码登录
为了进一步提升安全性,应禁止基于密码的远程登录。在 /etc/ssh/sshd_config
中找到
PasswordAuthentication yes
将其修改为
PasswordAuthentication no
同样去掉前面的注释符号,并重启SSH服务。
需要特别注意的是,如果你的服务器安装了如VestaCP面板等管理工具,同时还开启了fail2ban防火墙机制,在上述操作之前务必先调整fail2ban规则,否则可能因未同步新端口而导致自己无法正常连接服务器。例如,如果你把默认22端口改成8063,那么防火墙规则也要相应更新,否则fail2ban有可能会阻止你的新连接请求。
以上方法能有效提升Linux服务器的远程访问安全性,但每一步操作都需谨慎进行,建议提前备份相关配置文件,以便出现问题时及时恢复。
信息参考来源:国外主机测评、VestaCP官方文档、Fail2Ban官方指南