SSH 免密登陆

理想案例

假设一切都很顺利的话,最简单的方式以下:服务器

  1. 使用 ssh-keygen 命令在本地生成一对密钥(Public/Private Key)
  2. 使用 ssh-copy-id username@your-server-ip 命令将本地的公钥上传到远程服务器
  3. 如今使用 ssh username@your-server-ip 命令便可免密登陆了

若是以前已经在本地生成过密钥了,那第一步均可以省了。怎么看有没有生成过:使用 ls -a ~/.ssh 命令看下是否已经存在 id_rsa 和 id_rsa.pub 文件,有即生成过。ssh

现实状况

但每每看别人玩的很嗨,到本身实操了就会出现各类问题。仍是那句话:该踩的坑一个都不会少! 若是遇到问题了能够看看下面列举出来的常见的 TROUBLESHOOTINGspa

  1. 若是你在执行 ssh-copy-id 命令时指定了某个公钥,好比 ssh-copy-id -i ~/.ssh/id_rsa_another.pub username@your-server-ip,此时注意在使用 ssh 命令远程链接的时候也须要指定这个公钥,不然默认是会拿 ~/.ssh/id_rsa.pub 去匹配的,因此你的链接命令应该是相似这样:ssh -i ~/.ssh/id_rsa_another.pub username@your-server-ip
  2. SSH 服务端可能配置了不容许公钥受权登陆。查看服务器上的 /etc/ssh/sshd_config 文件里是否配置正确:PubkeyAuthentication yes
  3. SSH 服务端可能配置了不容许 root 用户登陆。查看服务器上的 /etc/ssh/sshd_config 文件,其中若是包含 PermitRootLogin no 则将其改成 yes

基本原理

一张时序图最能说明问题了 :P
3d

参考资料

相关文章
相关标签/搜索