假设一切都很顺利的话,最简单的方式以下:服务器
使用 ssh-keygen
命令在本地生成一对密钥(Public/Private Key)ssh
使用 ssh-copy-id username@your-server-ip
命令将本地的公钥上传到远程服务器code
如今使用 ssh username@your-server-ip
命令便可免密登陆了cdn
若是以前已经在本地生成过密钥了,那第一步均可以省了。怎么看有没有生成过:使用 ls -a ~/.ssh
命令看下是否已经存在 id_rsa 和 id_rsa.pub 文件,有即生成过。server
但每每看别人玩的很嗨,到本身实操了就会出现各类问题。仍是那句话:该踩的坑一个都不会少! 若是遇到问题了能够看看下面列举出来的常见的 TROUBLESHOOTING。blog
若是你在执行 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
。ip
SSH 服务端可能配置了不容许公钥受权登陆。查看服务器上的 /etc/ssh/sshd_config 文件里是否配置正确:PubkeyAuthentication yes
get
SSH 服务端可能配置了不容许 root 用户登陆。查看服务器上的 /etc/ssh/sshd_config 文件,其中若是包含 PermitRootLogin no
则将其改成 yesit
一张时序图最能说明问题了 :P io