環境:
Linux 主機A,要設定排程,傳送特定檔案給Linux 主機B。
不想用帶有Linux 主機B的明碼帳號密碼 shell。
解決過程:
使用SSH Key-Based 身份驗證
A. 準備階段 (在 A主機 上)
- 取得公鑰內容:
Bash
cat
~/.ssh/id_dsa.pub
複製輸出的整行內容(從
ssh-dss 到最後的備註)。
B. 執行貼上與權限設定 (在 B主機上)
- 使用密碼連線到 B主機:
Bash
ssh
<B主機username>@<B主機IP>
- 確認或建立 .ssh 目錄並設定權限:
Bash
mkdir
-p ~/.ssh
chmod
700 ~/.ssh
- 追加公鑰到
authorized_keys: (使用您複製的公鑰內容替換 [您複製的公鑰內容])
請務必使用雙引號 >> 進行追加,避免覆蓋:
Bash
echo
"[您複製的公鑰內容]"
>> ~/.ssh/authorized_keys
- 設定 authorized_keys 權限:
Bash
chmod
600 ~/.ssh/authorized_keys
安全性注意
手動方式的最大風險就是權限設定。如果 ~/.ssh 或
~/.ssh/authorized_keys 的權限設定不正確 (例如太寬鬆,允許其他使用者寫入),SSH 伺服器會拒絕使用金鑰認證,並提示錯誤。
驗證階段 (無論使用哪個方法,必須進行)
在 A主機上執行:
Bash
ssh <B主機username>@<B主機IP>
如果設定成功,系統將不會要求您輸入密碼,而是直接顯示 B主機的命令列提示符。
如果連線成功,您可以輸入 exit 退出,然後繼續設定您的 Cron Job。
沒有留言:
張貼留言