Linode SSH Key,Permission denied (publickey)問題
上傳指定公鑰,避免未知配對錯誤。
關於SSH Key
id_rsa.pub
:公開金鑰(public key),這是可以對外公開的金鑰,之後要將它放在遠端的 Linux 伺服器上作認證使用。
id_rsa
:私密金鑰(private key),這是要保護好的金鑰,它等同於你的 Linux 密碼,放在自己的電腦中。
Permission denied (publickey)
Linode用得好好的SSH Key連線不知道為什麼突然出現Permission denied (publickey),看到的時候一陣寒意冒出來。
因為通常使用SSH Key連線,會把密碼登入關掉,變成現在我完全無法進去主機操作了;這種感覺就像是站在大門前,感應扣突然失靈的尷尬。
還好有後門
在後台發現有Lish Console,可以進去用root權限重新打開密碼登入的功能,這門總算是可以進去了。類似於感應大門打不開,但是把總電源切掉,門就自動開啟的安全機制(?)
Key的問題
You don’t have the matching key on your local machine.
You have too many keys on your local machine.
朋友花了整個下午幫忙除錯,後來發現我的問題是Key的配對;也就是上文提到的本機端有太多把鑰匙,配對的時候發生錯誤。
如果能重來怎麼避免
先前設定時我是按照DigitalOcean這篇文章的步驟,在把Public Key上傳時文章並沒有特別指定,可能預設使用者本機端沒有太多把Key簡化步驟。
因為我本機端還有其他的Key,所以這次再開一台Server紀錄流程:指定要上傳的Public Key設定連線。
ssh-copy-id複製公鑰到遠端主機
ssh-copy-id -i id_rsa.pub root@IP
透過 -i ,指定.ssh資料夾下的id_rsa.pub公鑰上傳,注意是後面有.pub的。
輸入密碼,把公鑰複製到遠端主機。
cat ~/.ssh/authorized_keys
會看到剛剛傳上去的公鑰。
SSH Key登入與關閉密碼登入
ssh root@IP,遠端主機的公鑰,和本機端的私鑰配對成功,免密碼登入。
sudo nano /etc/ssh/sshd_config
註解掉PasswordAuthentication,並改成no,之後就只有擁有鑰匙的使用者可以登入。
延伸閱讀
SSH 連線抓不到 id_rsa 以外的 key
懶得每次都要加上 pem 檔路徑
要指定鑰匙登入可以用
ssh -i ~/.ssh/[key] [username]@ip
設定config檔案能避免每次都要打一長串。
Host是方便自己管理的名稱,跟主機端沒關係,User是主機端登入的名字。