如何将Ubuntu SSH密钥登录,彻底告别密码登录的繁琐?

摘要:在Linux服务器管理中,SSH(Secure Shell)是最常用的远程连接工具。然而,传统的密码登录方式存在诸多安全隐患:弱密码易被暴力破解、密码泄露风险高、难以管理多个服务器等。相比之下,SSH密钥登录通过非对称加密技术,提供了更高级
在Linux服务器管理中,SSH(Secure Shell)是最常用的远程连接工具。然而,传统的密码登录方式存在诸多安全隐患:弱密码易被暴力破解、密码泄露风险高、难以管理多个服务器等。相比之下,SSH密钥登录通过非对称加密技术,提供了更高级别的安全保障。 本文将详细介绍如何在Ubuntu服务器上配置SSH密钥登录,并完全禁用密码认证。无论你是个人开发者还是系统管理员,这套方案都能显著提升服务器的安全性。 环境准备 服务器环境 操作系统:Ubuntu 22.04.5 LTS SSH服务:OpenSSH Server 用户权限:具有sudo权限的用户 客户端环境 操作系统:Windows 10/11 连接工具:FinalShell(也可使用其他SSH客户端) 第一部分:服务器端SSH服务安装与基础配置 1.1 更新系统并安装SSH服务 首先,通过控制台或VNC登录到Ubuntu服务器。如果服务器尚未安装SSH服务,执行以下命令: # 更新软件包列表 sudo apt update # 安装OpenSSH服务器 sudo apt install openssh-server -y 1.2 启动并启用SSH服务 安装完成后,启动SSH服务并设置为开机自启: # 启动SSH服务 sudo systemctl start ssh # 设置开机自启 sudo systemctl enable ssh # 检查服务状态 sudo systemctl status ssh 正常情况下,你应该看到"active (running)"状态。 1.3 配置防火墙(如有需要) 如果服务器启用了防火墙,需要允许SSH连接: # 允许SSH端口(默认22) sudo ufw allow ssh # 启用防火墙 sudo ufw enable # 检查防火墙状态 sudo ufw status 第二部分:SSH密钥生成与配置 2.1 生成Ed25519密钥对 Ed25519是目前最推荐的SSH密钥算法,它比传统的RSA算法更安全、更快速: # 生成Ed25519密钥对 ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "$(whoami)@$(hostname)-$(date +%Y-%m-%d)" 系统会提示: 输入保存位置:直接回车使用默认路径 输入私钥密码:建议设置强密码(至少8位,包含大小写字母、数字和特殊符号) 再次确认密码:输入相同的密码 2.2 设置正确的文件权限 正确的文件权限是SSH密钥安全的关键: # 设置.ssh目录权限 chmod 700 ~/.ssh # 设置私钥权限(只有所有者可读写) chmod 600 ~/.ssh/id_ed25519 # 设置公钥权限(所有者可读写,其他人可读) chmod 644 ~/.ssh/id_ed25519.pub # 查看权限设置 ls -la ~/.ssh/ 输出应类似: drwx------ 2 user user 4096 Dec 18 18:30 . drwxr-xr-x 18 user user 4096 Dec 18 18:20 .. -rw------- 1 user user 509 Dec 18 18:30 id_ed25519 -rw-r--r-- 1 user user 128 Dec 18 18:30 id_ed25519.pub 2.3 配置公钥认证 创建授权文件并将公钥添加到其中: # 创建authorized_keys文件(如果不存在) touch ~/.ssh/authorized_keys # 设置授权文件权限 chmod 600 ~/.ssh/authorized_keys # 将公钥添加到授权文件 cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys # 验证公钥已添加 cat ~/.ssh/authorized_keys 2.4 测试本地密钥认证 在服务器本地测试密钥认证是否正常工作: ssh -i ~/.ssh/id_ed25519 localhost 第一次连接会提示确认主机指纹,输入"yes"继续。如果设置了私钥密码,会提示输入。成功登录后,执行exit退出。
阅读全文