懶得打帳號密碼登入 Linux 工作站 ewe
因為網路上很多資料可能都過時了,或是說明不夠清楚
索性自己打一篇作紀錄
Putty 有提供公私鑰認證登入的方式,簡單說就是
本機放 private key,在 Linux 主機上放置 public key
那麼使用 ssh 連線時,就可以直接連線,不需要輸入帳號密碼
這裡使用 putty 連線 Linux 主機
詳細方法如下
1.產生 public key 與 private key在 Linux 主機上執行如下指令,產生 ssh 所需的 public 與 private key
ssh-keygen -f user001
這樣會產生名為 "
user001.pub" 與 "
user001" 的一組公私鑰
當然檔案名稱可以自行決定要取什麼
接著把 Linux 主機上面的 "
user001" 這個 private key file 下載到你的電腦
這邊我是用 FileZilla 使用 SFTP 協定下載下來的,詳細方法這邊就不贅述
接著開啟 PuTTY Key Generator
這個程式通常在你安裝 PuTTY 主程式的資料夾內就可以找到
點選上方工具列裡面的「Conversions/Import Key」,把你剛剛下載下來的private key匯入PuTTY Key Generator 內。
接著按 [Save private key],將 private key 存成 putty 所要的格式
這裡假設存成的檔名為 "user001.ppk"
2.設定putty到「Session」頁面
輸入要連線的主機的 IP 或 host name,並為這個 session 取名後按 [Save]
接著到「Connection/Data」頁籤的 Auto-login username 欄位內,填入你用來登入 Linux 主機的帳號名稱
到「Connection/SSH/Auth」頁籤的 Private key file for authorization 欄位,填入(or Browse)你在自己電腦上存放 private key 的位置
然後回到「Session」頁籤,找到你當初的 Saved Session,按下[Save]按鈕
將上述的設定儲存,
非常重要,不然你剛剛的動作就是做白工這邊我的範例是 "test linux – 192.168.153.128" 這個 Session
3.部屬public key在Linux主機上使用 ssh-copy-id 指令將 public key 部屬到 Linux Server 上
user001.pub 是 public key 檔名,user001 是帳號,192.168.253.128是IP
ssh-copy-id -i user001.pub user001@192.168.253.128
部屬上去之後,Linux 主機上的 /home/user001/.ssh 目錄下,會出現一個名為 authorized_keys 的檔案,你的 public key 會被存在裡面。
如果這個檔案原本就存在,則你的 public key 會被 append 在檔案後面。
記得檢查 /home/user001 目錄的權限必須是700,.ssh 目錄權限也必須是 700
且 authorized_keys 這個檔案的權限必須是 600
.ssh 及 authorized_keys 的使用者和群組需要是 user001
權限錯誤在連線時可能會出現 "server refused our key" 的 error message
可能會需要用到的 Linux 指令:
檢查權限
ls -al更改權限
chmod 600 authorized_keys
將 public key 增加到 authorized_keys 這個檔案裡
cat user001.pub >> authorized_keys
4.測試開啟 putty 選擇一開始我們儲存的那個 Session,按 [Open] 進行連線
不需要輸入帳號密碼,即可看到如下範例畫面,表示已經登入成功。
ps. 如果一直無法登入,可以開啟 debug log 來查原因,在 /etc/ssh/sshd_config 檔案中,找到LogLevel INFO,將它改為 LogLevel DEBUG3。重新登入後,打開 /var/log/secure 檔查看log。