目錄表

[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 download

開啟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 來將私鑰帶入


0x03 參考資料