假設一切都很順利的話,最簡單的方式如下:
使用ssh-keygen
命令在本地生成一對金鑰(public/private key)
使用ssh-copy-id username@your-server-ip
命令將本地的公鑰上傳到遠端伺服器
現在使用ssh username@your-server-ip
命令即可免密登入了
如果之前已經在本地生成過金鑰了,那第一步都可以省了。怎麼看有沒有生成過:使用ls -a ~/.ssh
命令看下是否已經存在 id_rsa 和 id_rsa.pub 檔案,有即生成過。
但往往看別人玩的很嗨,到自己實操了就會出現各種問題。還是那句話:該踩的坑乙個都不會少!如果遇到問題了可以看看下面列舉出來的常見的troubleshooting。
如果你在執行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
。
ssh 服務端可能配置了不允許公鑰授權登入。檢視伺服器上的 /etc/ssh/sshd_config 檔案裡是否配置正確:pubkeyauthentication yes
ssh 服務端可能配置了不允許 root 使用者登入。檢視伺服器上的 /etc/ssh/sshd_config 檔案,其中如果包含permitrootlogin no
則將其改為 yes
一張時序圖最能說明問題了 :p
SSH免密登入
a為本地主機 b為遠端主機 生成公鑰私鑰對 ssh keygen t rsa登入遠端機器 ssh root 然後輸入密碼 將.ssh的許可權設為700 mkdir ssh 如果資料夾已存在,跳過 chmod 700 ssh將本地生成的rsa公鑰複製到遠端機器 scp ssh id rsa.pub r...
SSH免密登入
當我們在配置多台計算,使之可以相互使用無密碼登入 ssh,之前都是一台一台的配置,現在一台a上新增b,然後在另一台b上再次新增a,這樣使得authorized keys中的內容相同,但時並不是完全相同,比如新增順序。如果超過2臺,這種配置就相當複雜了,而且容易出錯。後來,在網上看到了一種簡單的配置,...
SSH免密登入
前提 本地和遠端伺服器都已經安裝了ssh 遠端伺服器ip 192.168.1.145 遠端登入使用者 admin 本地命令 1 ssh keygen t rsa p 一路回車 2 scp ssh id rsa.pub admin 192.168.1.145 home admin ssh 3 按提示輸...