假設一切都很順利的話,最簡單的方式以下:服務器
使用 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