1. 生成SSH密钥对首先,需要在本地机器上生成SSH密钥对。
生成SSH密钥对代码语言:javascript复制ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 默认情况下,密钥会保存在 ~/.ssh/id_rsa(私钥)和 ~/.ssh/id_rsa.pub (公钥)。
2. 将公钥复制到远程服务器将生成的公钥复制到远程服务器的 ~/.ssh/authorized_keys 文件中。
使用 ssh-copy-id 命令代码语言:javascript复制ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host手动复制公钥复制公钥内容:
cat ~/.ssh/id_rsa.pub 登录到远程服务器:
ssh user@remote_host将公钥内容追加到 ~/.ssh/authorized_keys 文件中:
mkdir -p ~/.ssh chmod 700 ~/.ssh echo "公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys3. 配置SSH服务确保远程服务器上的SSH服务配置允许密钥登录。
编辑 /etc/ssh/sshd_config 文件打开配置文件:
sudo nano /etc/ssh/sshd_config确保以下设置正确:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no # 可选,禁用密码登录保存并退出编辑器。重启SSH服务以应用更改:
sudo systemctl restart sshd4. 测试SSH密钥登录尝试使用SSH密钥登录到远程服务器。
测试登录代码语言:javascript复制ssh user@remote_host如果一切配置正确,你应该能够无密码登录到远程服务器。
5. 常见问题及解决方法问题1:无法连接到远程服务器解决方法:
检查网络连接是否正常。确保远程服务器的防火墙允许SSH连接(默认端口22)。确认SSH服务正在运行:sudo systemctl status sshd问题2:权限错误解决方法:
确保 ~/.ssh 目录和 ~/.ssh/authorized_keys 文件的权限正确:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys问题3:密钥未被接受解决方法:
确认公钥已正确复制到 ~/.ssh/authorized_keys 文件中。检查 ~/.ssh/authorized_keys 文件中是否有多余的空行或格式错误。确保 sshd_config 文件中的 PubkeyAuthentication 和 AuthorizedKeysFile 设置正确。问题4:仍然提示输入密码解决方法:
确认 sshd_config 文件中的 PasswordAuthentication 设置为 no。确认 sshd_config 文件中的 ChallengeResponseAuthentication 设置为 no。重启SSH服务以应用更改:sudo systemctl restart sshd