[FreeBSD] SSH With Keygen
0x00 前言
在管理 Unix-like 機器時,常常會有使用到 ssh 的地方,像是從 putty 遠端登入、scp、rsync 等都會透過 ssh
而一些指令寫成 crontab 時必須要能夠自動認證才能正確運作,避免卡在輸入密碼階段而無法繼續執行工作
對於 putty 而言,使用 key 快速登入也是個省時的方式
本篇針對 putty 登入和機器間使用 ssh key 的自動認證作為範例,而這邊貪圖方便,並未使用 keypassphrase
0x01 Putty自動登入
Step1.在Freebsd機器上使用ssh-keygen指令產生金鑰對
$ssh-keygen
這個指令預設是使用rsa演算法,在家目錄底下的 .ssh 資料夾產生 id_rsa / id_rsa.pub
兩個檔案
請確認 .ssh的擁有者和群組和帳號群組相同,且資料夾權限為700
id_rsa為私鑰,檔案權限為600,且owner為自己
id_rsa.pub為公鑰,檔案權限為644
Step2.將金鑰轉換成putty可用的格式
使用sftp下載剛剛產生的id_rsa
開啟puttygen>Conversion>Import Key,將id_rsa匯入
Step3.設定公鑰
將 puttygen 中顯示在 Public key for pasting into OpenSSH authorized_keys files:欄位裡的資料複製下來
在Freebsd機器上 ~/.ssh/authorized_keys
中將剛剛的資料貼上,檔案不存在則自己建立
Step4.設定私鑰
在剛剛的puttygen中選擇Save private key
Step5.設定putty登入
開啟putty後,在Connection>Data>Auto-login username
填入剛剛家目錄那個user帳號
在Connection>SSH>Auth>Private key file for authentication
選擇剛剛存檔的private key檔
在Windows>Translation
記得調整編碼為UTF-8
在Session>Saved Session
填入hostname,存檔後方便未來重複使用
接著輸入hostname就可以發現不需要密碼直接登入了
0x02 Putty之外的其他使用
其實其他應用和putty差不多,差別在於putty的金鑰格式需要透過putty keygen多轉換一次而已
Step1.在Client主機產生金鑰對
$ssh-keygen
id_rsa必須放在 ~/.ssh/ 底下才行,權限必須為700且owner必須為自己
Step2.將公鑰放入被登入主機的authorized_keys檔
Client:
$scp ~/.ssh/id_rsa.pub kshuang@bsd4.cs.nctu.edu.tw:~/.ssh
Server:
$cat id_rsa.pub >> ~/.ssh/authorized_keys
請確認authorized_keys權限為644
如此一來當 client 透過 scp、rsync 等需要 ssh 的指令時就會直接建立連線而不需要輸入密碼了
client 會使用 id_rsa 這把私鑰去通過 ssh 認證
假如我們產生的金鑰對不是使用 id_rsa 這個名稱的話,在 ssh 的時候可以透過 -i private_key_file 來將私鑰帶入