如何将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退出。
