SSH密钥认证是一种安全的身份验证方法,它使用公钥和私钥对来进行身份验证。以下是配置SSH密钥认证的步骤:
在客户端生成密钥对
-
打开终端(Linux/Mac)或 命令提示符/PowerShell(Windows)。
-
输入以下命令生成一个新的SSH密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa
:指定密钥类型为RSA。-b 4096
:指定密钥长度为4096位。-C "your_email@example.com"
:添加一个注释,通常是你的电子邮件地址。
-
按照提示操作,选择保存密钥的位置(默认是
~/.ssh/id_rsa
),并设置一个密码短语(可选但推荐)。
将公钥复制到服务器
-
使用
ssh-copy-id
命令将公钥复制到服务器:ssh-copy-id user@server_ip
user
:服务器上的用户名。server_ip
:服务器的IP地址。
-
如果
ssh-copy-id
不可用,可以手动复制公钥:- 在客户端,找到生成的公钥文件(例如
~/.ssh/id_rsa.pub
)。 - 登录到服务器,创建
.ssh
目录(如果不存在)并设置正确的权限:mkdir -p ~/.ssh chmod 700 ~/.ssh
- 将公钥内容追加到服务器上的
~/.ssh/authorized_keys
文件中:echo "your_public_key" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
- 在客户端,找到生成的公钥文件(例如
配置服务器以使用密钥认证
-
编辑服务器上的SSH配置文件
/etc/ssh/sshd_config
:sudo nano /etc/ssh/sshd_config
-
找到并修改以下行:
PubkeyAuthentication yes
- 确保
PubkeyAuthentication
设置为yes
。
- 确保
-
(可选)禁用密码认证以提高安全性:
PasswordAuthentication no
-
保存并退出编辑器,然后重启SSH服务:
sudo systemctl restart sshd
测试SSH密钥认证
- 从客户端尝试使用SSH连接到服务器:
ssh user@server_ip
- 如果一切配置正确,你应该能够无需输入密码即可登录。
注意事项
- 确保私钥文件(例如
~/.ssh/id_rsa
)的安全性,不要将其泄露给他人。 - 定期更新密钥对,并在必要时重新配置服务器。
- 如果使用的是Windows客户端,可以考虑使用PuTTY等工具生成和管理密钥对。
通过以上步骤,你应该能够成功配置SSH密钥认证,从而提高SSH连接的安全性和便利性。