登入 ssh 免輸入帳號密碼
每次需要產生公私鑰的時候總是忘記,記錄在這邊,同時給有需要的人! (2019-11-01 補充:這篇寫得很詳細,如果有不清楚的地方可以參考)
從 Windows 登入 Linux
小蛙在家大多使用 Windows 的環境,當需要幫忙管理朋友的伺服器,才去翻東翻西去找出密碼來,這時候就可以在要登入管理的 Linux 系統下設定好相對應的公鑰,當小蛙的 Windows 拿著私鑰來連線的時候,公鑰跟私鑰搭配成一組就可以免輸入密碼登入囉!
在 Windows 電腦上取得公私鑰步驟
1. 下載 PuTTYgen
2. 開啟後可基本按照該網頁的操作進行,大概是 (a) 設定 SSH-2 RSA (b) 長度小蛙設定 2048 (c) 點選 Generate (小蛙後來使用 MobaXterm 裡面有一個類似 PuTTYgen 的工具 MobaKeyGen,使用上大同小異)
3. 此時在進度條下方滑鼠動來動去,一開始小蛙不知道,想說怎麼進度條都不會動 …
4. 複製產生出來的 Pubkey
5. 如果要登入不輸入密碼,Key passphrase 留空白,這裡也可以把所有自己的 key 都設定成同一個密碼,這樣也可以達到所有機器用同一個密碼搭配 key 登入,不再需要記哪台機器是哪個密碼,小蛙是懶惰,不想輸入密碼 …
6. key comment 可以隨便打,自己可以認出是什麼並且管理就好
7. Save public key 及 Save private key,務必好好保管,如果私鑰掉了,就沒辦法跟公鑰搭成一對囉
Linux 設定允許登入的金鑰
- 先遠端登入 Linux 系統,小蛙的是 Ubuntu,不過應該都差不多
- 編輯登入目錄下的設定檔,如果沒有該檔案的話,可直接新建一個 vim ~/.ssh/authorized_keys
- 將上面複製的公鑰,貼在檔案中,要注意每一行為一個金鑰,儲存後離開
Windows 設定使用私鑰連線 – PieTTY
- 開啟 PieTTY 或是 PuTTY (以下小蛙以 PieTTY 作為範例)
- 點選 PuTTY 模式,先設定好要連線的 IP, Port,接著在 Saved Sessions 填入要儲存的名字,以後可以直接選,不用每次都要設定
- 找到 Connection -> Data -> Login details: Auto-login username,填入 Linux 登入的帳號
- 找到 Connection -> SSH -> Auth -> 把 Attempt authentication using Pasgeant 及 Attempt “keyboard-interactive” auth (SSH-2) 打勾
- 接續點選 Browse… 選取上面產生出來的 Private key
- 回到 Session 頁籤,點選右方 Save,把剛剛的設定存好
- 點選 Open 就可以直接連線到 Linux 主機囉
Windows 設定使用私鑰連線 – FileZilla
- 開啟 FileZilla -> 檔案 -> 站台管理員
- 新增站台,右邊「一般」,協定「SFTP」,登入形式改成「金鑰檔案」,這裡要選擇剛剛產生的私鑰,其他主機名稱跟使用者照自己的設定輸入
- 直接連線就可以囉!
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 私鑰