登入 ssh 免輸入帳號密碼

每次需要產生公私鑰的時候總是忘記,記錄在這邊,同時給有需要的人! (2019-11-01 補充:這篇寫得很詳細,如果有不清楚的地方可以參考)

從 Windows 登入 Linux

小蛙在家大多使用 Windows 的環境,當需要幫忙管理朋友的伺服器,才去翻東翻西去找出密碼來,這時候就可以在要登入管理的 Linux 系統下設定好相對應的公鑰,當小蛙的 Windows 拿著私鑰來連線的時候,公鑰跟私鑰搭配成一組就可以免輸入密碼登入囉!

在 Windows 電腦上取得公私鑰步驟

1. 下載 PuTTYgen

2. 開啟後可基本按照該網頁的操作進行,大概是 (a) 設定 SSH-2 RSA  (b) 長度小蛙設定 2048  (c) 點選 Generate (小蛙後來使用 MobaXterm 裡面有一個類似 PuTTYgen 的工具 MobaKeyGen,使用上大同小異)

AL9nZEUVEIbskrddj V3MycO 12NZ yBjbtSfkYZyDagiBhIP1xpg ssDDeDEIzVYCPGpctplCous1VBcaIXfOZ4U gtN5dIxhJkYZYjmACIHWGJ7yYOUYvcHatz7v5cATPIZb VyWyaBsEsULoHDkOj1tTT=w958 h894 no?authuser=2 登入 ssh 免輸入帳號密碼

3. 此時在進度條下方滑鼠動來動去,一開始小蛙不知道,想說怎麼進度條都不會動 …

AL9nZEWEl0WsCBdMe 1TdcH4g3rq6WILjUbFhQ5B5nqy rnfQD7cJbDokMmza7GvIPktJlMxx9JuQL7Cnnkr1x9nY6AN4Xl9pHVIpHywp PPhAbfP zQbw7fVJpp5yAAMJUEMvfK9t8prAsW7pvidb0OlUcv=w477 h446 no?authuser=2 登入 ssh 免輸入帳號密碼

4. 複製產生出來的 Pubkey

5. 如果要登入不輸入密碼,Key passphrase 留空白,這裡也可以把所有自己的 key 都設定成同一個密碼,這樣也可以達到所有機器用同一個密碼搭配 key 登入,不再需要記哪台機器是哪個密碼,小蛙是懶惰,不想輸入密碼 …

6. key comment 可以隨便打,自己可以認出是什麼並且管理就好

7. Save public key 及 Save private key,務必好好保管,如果私鑰掉了,就沒辦法跟公鑰搭成一對囉

AL9nZEXUCd7H22scM89sjeWKRBuOTpV5WowL9QOImMSmyUm 3VkC3sqQX5tQXHA6YvvFnofgF80iFTAkgV u5eMITGrcgxNvTMu3JWuYnlncho2H0Qt4vjvvVymeINnLCMyfe0ab9Nfd EFsoBsALs6GbGql=w958 h894 no?authuser=2 登入 ssh 免輸入帳號密碼

Linux 設定允許登入的金鑰

  1. 先遠端登入 Linux 系統,小蛙的是 Ubuntu,不過應該都差不多
  2. 編輯登入目錄下的設定檔,如果沒有該檔案的話,可直接新建一個 vim ~/.ssh/authorized_keys
  3. 將上面複製的公鑰,貼在檔案中,要注意每一行為一個金鑰,儲存後離開

Windows 設定使用私鑰連線 – PieTTY

  1. 開啟 PieTTY 或是 PuTTY (以下小蛙以 PieTTY 作為範例)
  2. 點選 PuTTY 模式,先設定好要連線的 IP, Port,接著在 Saved Sessions 填入要儲存的名字,以後可以直接選,不用每次都要設定
  3. 找到 Connection -> Data -> Login details: Auto-login username,填入 Linux 登入的帳號
  4. 找到 Connection -> SSH -> Auth -> 把 Attempt authentication using Pasgeant 及 Attempt “keyboard-interactive” auth (SSH-2) 打勾
  5. 接續點選 Browse… 選取上面產生出來的 Private key
  6. 回到 Session 頁籤,點選右方 Save,把剛剛的設定存好
  7. 點選 Open 就可以直接連線到 Linux 主機囉

Windows 設定使用私鑰連線 – FileZilla

  1. 開啟 FileZilla -> 檔案 -> 站台管理員
  2. 新增站台,右邊「一般」,協定「SFTP」,登入形式改成「金鑰檔案」,這裡要選擇剛剛產生的私鑰,其他主機名稱跟使用者照自己的設定輸入
  3. 直接連線就可以囉!

Linux 連線到 Linux

首先必須在要連線的 Linux client 建立一組金鑰,分別會是公鑰id_rsa.pub及私鑰id_rsa,必須要把這組金鑰保存好。

產生金鑰

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 直接按 Enter
Enter passphrase (empty for no passphrase): 直接按 Enter
Enter same passphrase again: 直接按 Enter
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
......
The key's randomart image is:
......

設置公鑰

把公鑰設置到要連線的主機信任清單內,可以使用上面的方法 vim ~/.ssh/authorized_keys,或是從這邊看到的很方便的方法,直接從要連線的這台設定即可

cat ~/.ssh/id_rsa.pub | ssh root@your_id_address "cat >> ~/.ssh/authorized_keys"
# 將 id_rsa.pub 的內容透過 ssh 傳到遠端並且放進 authorized_keys 裡面

其他

使用特定金鑰

當下 ssh [email protected] 的時候,會預設使用家目錄下的 id_rsa 進行連線,但有時候小蛙必須要幫朋友用別的金鑰測試,這時候就可以透過 -i 這個參數來設定

xx:~ hans$ ssh -i Desktop/private_key_mac [email protected]

權限錯誤問題

小蛙在使用朋友給的金鑰時,發生以下錯誤

xx:~ hans$ ssh -i Desktop/private_key_mac [email protected]
Warning: Permanently added 'x.x.x.x' (ECDSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'Desktop/private_key_mac' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "Desktop/private_key_mac": bad permissions

查了一下確切需要的權限只要 400 就可以

chmod 400 私鑰

參考資料

  1. PuTTYgen
  2. PieTTY
  3. PuTTY

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料