一般ssh會使用帳號跟密碼的方式登入遠端主機,這方式雖然方便但是卻有風險,只要其他人知道帳號跟密碼一樣就可以登入主機進行任何動作,所以可以使用key來登入,只要沒有這個key就不能登入主機,這樣也比帳號密碼安全。
而其實它還有另一種用途,如果要用rsync備份或更新其他主機的內容也可以用這個方式,就不用一台一台主機輸入密碼才能傳輸檔案。
1.製作ssh key
- ssh-keygen -t rsa 或 ssh-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 上,並下載 PuTTY