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而改變

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

  • ssh root@主機名稱

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

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

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

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

(2)將 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 檔路徑就可以免密碼登入囉~

發表迴響