SSH使用key登入

一般ssh會使用帳號跟密碼的方式登入遠端主機,這方式雖然方便但是卻有風險

只要其他人知道帳號跟密碼一樣就可以登入主機進行任何動作,所以可以使用key來登入,只要沒有這個key就不能登入主機,這樣也比帳號密碼安全。

而其實它還有另一種用途,如果要用rsync備份或更新其他主機的內容也可以用這個方式,就不用一台一台主機輸入密碼才能傳輸檔案。

1.製作ssh key

ssh-keygen -t rsassh-keygen -d (dsa)=> 產生出 id_rsa, id_rsa.pub在使用者目錄中.ssh資料夾裡面

製作時會問 Enter passphrase (empty for no passphrase): 此處直接 enter 跳過,下次才不會詢問密碼

id_rsa 是私鑰 private key

id_rsa.pub 是公鑰 public key

2.讓遠端登入到其他遠端主機

假如現在你有 A 跟 B 主機,A 主機照上方的方式做出了ssh金鑰

主要要讓 A 主機 可以不用使用密碼用 key 登入到 B 主機 進行操作

那就要將 A 主機 的 “公鑰” 上傳到 B 主機 中才能讓 A主機免密碼登入到 B 主機,只要在 A 主機輸入以下指令

ssh-copy-id -i $HOME/.ssh/id_rsa.pub (B主機) 上方紅字的部分改為主機IP或名稱

大致上主機回應如下方:

# ssh-copy-id -i $HOME/.ssh/id_rsa.pub (主機名稱)
The authenticity of host '(主機名稱) (IP)' can’t be established.
RSA key fingerprint is 金鑰指紋.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '(主機名稱),(IP)' (RSA) to the list of known hosts.
Now try logging into the machine, with "ssh '(主機名稱)'", and check in:

.ssh/authorized_keys

to make sure we haven’t added extra keys that you weren’t expecting.

※(主機名稱),(IP) 部分會依金鑰及主機名稱IP而改變

這個時候用 ssh 連線嘗試看看有沒有匯入成功

ssh [email protected]主機名稱

如果有成功匯入金鑰的話不用打密碼就可以連線進去了

3.本地電腦免密碼登入遠端主機

當我們用 windows 要遠端控制主機時大部分都會使用到 PieTTY 或 PuTTY 這兩款 SSH 連線軟體,平常設定都是使用帳號跟密碼做登入,如果要用免密碼登入增加安全性就要使用下方的方式

(1) 準備好 PieTTY 或 PuTTY (觀眾:廢話(打丁丁

(2) 將遠端主機使用者的 公鑰 重新命名成 authorized_keys

cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

(3) 將 id_rsa 私鑰 private key 下載到 windows 上

並下載 PuTTYgen ,開啟 PuTTYgen 上方有個 “Conversions” 選擇 “Import key” 選擇你從主機下載下來的 id_rsa私鑰,選擇後點擊下方會有個 “Save private key”,

軟體會問你說Are you sure you want to save this key without passphrase to protext it?,主要的意思是說”你確定要儲存這個key並不使用任何密碼保護它?”

選擇 yes 輸出 ppk 檔,ppk 檔是給PuTTY or PieTTY使用的,給 PuTTY or PieTTY ppk 檔路徑就可以免密碼登入囉~


© 2018. All rights reserved.