2009年11月1日星期日

Ubuntu 用 SSH + 憑證登入遠端主機

為了安全起見,阿舍都會使用 SSH 連線到 VPS上操作,使用 SSH 連線是可以減少資料被攔截而被駭的風險,但是,沒有辦法防止人家來猜密碼,所以,如果要根本解決這個問題的話,那就是要讓 SSH 不用打帳號和密碼,可是,不用打密碼和帳號要怎麼連線呢 ? 那就要用 SSH 加  憑證的方式才行,也就是說,要建立 SSH 連線,就一定要有正確的憑證才登入,如果沒有,那麼,就算有密碼也是沒有用的。

以下就是在 Ubuntu 透過 SSH 加憑證的方式來建立連線的設定步驟。

1.建立憑證
請在自己的電腦上執行下列指令來建立憑證。

ssh-keygen

  • 這個指令預設會把產出的憑證檔放在目前使用者的家目錄的 .ssh 資料夾裡,並且會自動命名為 id_ras。
  • 執行過程會詢問是否建立passphrase,可以不輸入,若有輸入 passphrase 的話,那麼在登入後,就需要輸入這一組 passphrase。
 2.上傳憑證檔
執行下列指令把產生出來的憑證檔上傳到要用 SSH 登入的主機。

scp ~/.ssh/id_rsa.pub ayubiz@arthurtoday.com.tw:~/.ssh/uploaded_key.pub

ayubiz 是遠端主機的使用者
arthurtoday.com 是遠端主機的位址


3.複製和變更上傳檔案
執行下列指令把上傳上去的檔案複製到 ayubiz 這個使用者的家目錄的 .ssh 資料夾下,並將檔名變更為 authorized_keys。

ssh ayubiz@arthurtoday.com "echo `cat ~/.ssh/id_rsa.pub` >> ~/.ssh/authorized_keys"

4.調整 authorized_keys 檔權限

需要調整 authorized_keys 檔案的權限,不然會出現 Permission denied (publickey) 的錯誤訊息,可以選下列任一執行執行,阿舍建議用第二種就可以了。

chmod 400 /home/xyz/.ssh/authorized_keys
只有 root 可以修改此檔

chmod 600 /home/xyz/.ssh/authorized_keys
 使用者自己可以修改此檔


5.停用 SSH 的密碼認證
已經設定好用憑證來登入 SSH 之後,接下來就是要把 SSH 的密碼認證方式給停用掉,這樣,就只有設定憑證的腦才可以連線,就可以減少被不良人士試出密碼的機會,請用下面的指令來開啟 SSH 的設定檔,然後,把 「PasswordAuthentication」 這項目從 yes 改為 no,接著存檔和重開。

vi /etc/ssh/sshd_config

5.開始 SSH 連線

ssh xyz@xxx.com.tw

如果有設定 passphrase,這時就會出現要輸入的畫面,不然,就會直接登入了。

0 意見: