导语:SSH 是 Linux 服务器远程管理的“入口钥匙”🔐。配置得好,日常登录、文件传输、自动化发布都会顺畅很多;配置不当,则可能留下弱密码、暴露 root、误改配置导致无法连接等隐患。本文围绕 Linux SSH 远程登录配置,整理一套实用、可落地的做法。
一、先理解 SSH 登录的基本思路
SSH 通常由客户端 ssh 和服务端 sshd 组成,OpenSSH 官方手册将 sshd 描述为允许用户登录的守护进程,客户端配置可写在 ssh_config,服务端配置通常写在 /etc/ssh/sshd_config [1]。也就是说,想管理远程服务器,重点要关注“客户端怎么连”和“服务端允许谁、用什么方式连”。
二、安装与启动 SSH 服务
在 Debian、Ubuntu 系系统中,服务端包通常是 openssh-server;在 RHEL、CentOS、Rocky、AlmaLinux 系系统中,常见包名也与 OpenSSH server 相关。安装完成后,可使用 systemctl status ssh 或 systemctl status sshd 查看状态,具体服务名会因发行版而不同。修改服务端配置前,建议始终保留一个已登录的终端窗口,避免误操作后被锁在门外 🚪。
三、服务端核心配置项
服务端主配置文件一般是 /etc/ssh/sshd_config,man7 手册说明 sshd 会从该文件读取配置,文件以“关键字 参数”的形式书写,空行和以 # 开头的行会被视为注释 [2]。常见配置如下:Port 用于指定监听端口,PermitRootLogin 用于控制 root 是否允许登录,PasswordAuthentication 用于控制密码登录,PubkeyAuthentication 用于控制公钥登录。
实用建议:不要只靠“改端口”来当安全策略。更稳妥的做法是组合使用密钥登录、关闭不必要用户、限制 root 登录、开启防火墙规则和日志审计。
四、推荐使用密钥登录
相比长期使用密码登录,密钥登录更适合服务器管理和自动化任务。ssh-keygen 可用于生成、管理和转换 SSH 认证密钥;man7 文档显示,ssh-keygen 支持 ed25519、ecdsa、rsa 等类型,并且未指定参数时可生成 Ed25519 密钥 [3]。常用命令可以写成:ssh-keygen -t ed25519 -C "your_name",生成后私钥留在本机,公钥放到服务器用户的 ~/.ssh/authorized_keys。
复制公钥时,ssh-copy-id 很方便。该工具默认会把本地公钥追加到远程用户的 ~/.ssh/authorized_keys,并可通过 -i 指定公钥文件、通过 -p 指定端口 [4]。例如:ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip。完成后再测试 ssh user@server_ip,确认密钥可用后,再考虑关闭密码登录。
五、客户端配置提升效率
经常连接多台服务器时,可以编辑本机 ~/.ssh/config,把长命令变成短别名。OpenBSD 的 ssh_config 手册说明,ssh 客户端会读取命令行选项、用户配置文件 ~/.ssh/config 和系统级 /etc/ssh/ssh_config,并且 Host 块可匹配不同主机 [5]。例如可配置 Host prod、HostName 服务器地址、User deploy、Port 22、IdentityFile ~/.ssh/id_ed25519,之后只需输入 ssh prod。
六、修改配置后的安全生效流程
修改 /etc/ssh/sshd_config 后,不要急着重启。更稳妥的顺序是:先运行 sshd -t 检查语法,再使用 systemctl reload ssh 或 systemctl reload sshd 重新加载配置;如果发行版不支持 reload,再考虑 restart。nixCraft 也提醒,重启 SSH 前应测试 OpenSSH server 配置,否则可能因为错误配置失去连接 [6]。
七、几个常见实用技巧
- 限制登录用户:可使用 AllowUsers 或 AllowGroups 控制哪些用户或用户组允许登录,减少暴露面。
- 关闭 root 直登:日常建议使用普通用户登录,再通过 sudo 执行管理操作,降低误操作和暴力破解风险。
- 保留回滚通道:云服务器建议提前熟悉控制台、VNC、串口控制台等备用入口,配置出错时可救援。
- 检查日志:登录异常时可查看 journalctl -u ssh、journalctl -u sshd 或 /var/log/auth.log,具体路径取决于发行版。
- 保护私钥:私钥不要上传到服务器或代码仓库,建议设置 passphrase,并定期清理不用的 authorized_keys。
总结
Linux SSH 远程登录配置并不复杂,关键是按顺序做:先确保服务可用,再配置密钥登录,然后限制高风险登录方式,最后用 sshd -t 和 reload 安全生效 ✅。对于个人服务器,做到“密钥登录、禁用弱口令、谨慎重启”已经能避免很多常见问题;对于生产环境,还应结合防火墙、堡垒机、审计日志和最小权限原则持续加固。