以下就是在 Ubuntu 透過 SSH 加憑證的方式來建立連線的設定步驟。
1. 建立憑證
請在自己的電腦上執行下列指令來建立憑證。
ssh-keygen
- 這個指令預設會把產出的憑證檔放在目前使用者的家目錄的 .ssh 資料夾裡,並且會自動命名為 id_ras。
- 執行過程會詢問是否建立passphrase,可以不輸入,若有輸入 passphrase 的話,那麼在登入後,就需要輸入這一組 passphrase。
執行下列指令把產生出來的憑證檔上傳到要用 SSH 登入的主機 (註: 遠端主機的使用者家目錄下要先建好 .ssh 資料 )。
scp ~/.ssh/id_rsa.pub ayubiz@arthurtoday.com.tw:~/.ssh/xyz_key.pub
ayubiz 是遠端主機的使用者
arthurtoday.com 是遠端主機的位址
~/.ssh/xyz_key 是遠端主機要存放這個憑證的位置和檔名
~/.ssh/xyz_key 是遠端主機要存放這個憑證的位置和檔名
3. 複製和變更上傳檔案
執行下列指令把上傳上去的檔案複製到 ayubiz 這個使用者的家目錄的 .ssh 資料夾下,並將檔名變更為 authorized_keys。
ssh ayubiz@arthurtoday.com "echo `cat ~/.ssh/xyz_key.pub` >> ~/.ssh/authorized_keys"
如果不想打像上面這麼長的指令的話,也可以直接 SSH 到遠端主機後,執行下面這一行指令
cat ~/.ssh/xyz_key.pub >> ~/.ssh/authorized_keys
4.調整 authorized_keys 檔權限
再來,需要調整 authorized_keys 檔案的權限,不然會出現 Permission denied (publickey) 的錯誤訊息,可以選擇下列任一種方式來執行,阿舍建議用第二種就可以了。
chmod 400 ~/.ssh/authorized_keys
只有 root 可以修改此檔
或
chmod 600 ~/.ssh/authorized_keys
使用者自己可以修改此檔
5.停用 SSH 的密碼認證
已經設定好用憑證來登入 SSH 之後,接下來就是要把 SSH 的密碼認證方式給停用掉,這樣,就只有有設定憑證的賈腦才可以連線,這樣,就可以減少被不良人士試出密碼的機會,請用下面的指令來開啟 SSH 的設定檔,然後,把 「PasswordAuthentication」 這項目從 yes 改為 no,接著存檔和重開,如果「PasswordAuthentication」前面有 # 號的話,也要刪掉 。
sudo vi /etc/ssh/sshd_config
6. 重新啟動 SSH 服務
sudo service ssh restart
7. 開始 SSH 連線
ssh xyz@xxx.com.tw
如果有設定 passphrase,這時就會出現要輸入的畫面,不然,就會直接登入了。
問題還是沒解決嗎 ?? 這裡有更多的 Ubuntu 相關教學可以參考哩 ...
2 則留言 :
請教一下阿舍站長
上傳的指令
scp ~/.ssh/id_rsa.pub ayubiz@arthurtoday.com.tw:~/.ssh/uploaded_key.pub
與之後複製的指令
ssh ayubiz@arthurtoday.com "echo `cat ~/.ssh/id_rsa.pub` >> ~/.ssh/authorized_keys"
檔案似乎出錯
uploaded_key.pub id_rsa.pub
把第二個指令的id_rsa.pub 改為 uploaded_key.pub應該就可行 ~
Hello,
已經更正了,十分感謝 !! ^^=
Arthur...
張貼留言