SSH 通过密钥登录服务器
要通过 SSH 密钥登录服务器,需要先生成一对密钥(公钥和私钥),然后将公钥部署到服务器上。
1. 生成密钥对
使用以下命令生成一对 SSH 密钥。推荐使用 ed25519 算法,它更安全且性能更好。
ssh-keygen -t ed25519 -C "注释" -f ~/.ssh/id_ed25519命令参数说明:
-t ed25519:指定密钥类型为ed25519。-C "注释":为密钥添加一个识别标签,通常是你的邮箱。-f ~/.ssh/id_ed25519:指定密钥文件的存放位置和名称。~/.ssh/是默认且推荐的目录。
执行命令后,会提示设置一个密码短语。
- 设置密码短语可以为私钥增加一层额外的安全保护。即使私钥文件泄露,攻击者仍需此密码才能使用。
- 也可以直接按回车留空,这样登录时无需输入密码,更便捷,但安全性会降低。
2. 添加公钥到服务器
方法一:使用 ssh-copy-id(推荐)
这是最简单、最安全的方法,它会自动处理文件权限。
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@example.com命令参数说明:
-i ~/.ssh/id_ed25519.pub:指定要上传的公钥文件。user@example.com:替换为你的服务器用户名和地址。
方法二:手动部署
在某些环境下(例如部分 Windows 系统),可能没有 ssh-copy-id 命令。此时可以手动进行部署:
-
登录服务器:
ssh user@example.com
-
创建
.ssh目录(如果尚不存在):mkdir -p ~/.ssh -
将公钥内容追加到
authorized_keys文件:首先,在本地机器上查看并复制公钥内容:
cat ~/.ssh/id_ed25519.pub然后,在服务器上,将复制的内容追加到
authorized_keys文件中:echo "你的公钥内容" >> ~/.ssh/authorized_keys
-
设置正确的文件权限(非常重要!):
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
600权限确保只有文件所有者可以读写authorized_keys。700权限确保只有文件所有者可以访问、读取、写入和执行.ssh目录。
注意:如果权限设置不正确,SSH 服务会出于安全考虑而忽略你的密钥。
3. 配置 SSH 服务
确保服务器端的 SSH 服务允许密钥登录。编辑 SSH 配置文件:
nano -w /etc/ssh/sshd_config找到并确保以下选项设置为 yes(通常默认就是):
PubkeyAuthentication yes
(可选)为了提高安全性,在确认密钥登录正常工作后,可以禁用密码登录:
PasswordAuthentication no
警告:在禁用密码登录前,务必确保你的密钥登录已经成功配置并且可以正常使用!否则你可能会被锁定在服务器之外。
完成修改后,保存文件并重启 SSH 服务以使配置生效:
systemctl restart sshd