Linode SSH Key,Permission denied (publickey)問題

吳致賢(Jhih-Sian Wu)
一個人的文藝復興
5 min readAug 12, 2018

上傳指定公鑰,避免未知配對錯誤。

關於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簡化步驟。

shift + cmd + .可以顯示隱藏檔案,.ssh在使用者名稱資料夾下

因為我本機端還有其他的Key,所以這次再開一台Server紀錄流程:指定要上傳的Public Key設定連線。

ssh-copy-id複製公鑰到遠端主機

ssh-copy-id -i id_rsa.pub root@IP

透過 -i ,指定.ssh資料夾下的id_rsa.pub公鑰上傳,注意是後面有.pub的。

輸入密碼,把公鑰複製到遠端主機。

chmod權限,.ssh下的檔案
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是主機端登入的名字。

--

--