如何加入使用者的 ssh 金鑰到 ubuntu 伺服器

注意事項

  • 金鑰名稱可保持 id_rsa.開頭,eg. "id_rsa.target_device",以後使用上比較直覺
  • -C: 註解基本上人物是必需,至少知道是誰的金鑰,伺服器管理員好管理。也可以視情況加入是哪一台電腦、在哪一個位置等等

環境

  • 自己電腦:MacOS 14.4.1
  • 伺服器電腦:Ubuntu 24

查詢自己電腦是否已有金鑰

ls -alt ~/.ssh
如果看到 id_rsa 和 id_rsa.pub 這兩個檔為一組,則表示已存在至少一組金鑰。pub是公鑰,另一個是私鑰。

沒有金鑰的,要先產出一組

ssh-keygen -t rsa -b 4096 \
  -f ~/.ssh/YOUR_ID_RSA_FILE_NAME \
  -C "your_email@example.com"
  • -f: 設定要產出金鑰的檔案位置跟檔名
  • -C: 該公鑰文件裡最後面會留下的註解,至少要方便辨別是哪位使用者的
接下來要輸入你想設定的密碼。以後方便不用打密碼的話,直接 Enter
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
這樣就有一組金鑰了

把剛產出的公鑰加入到伺服器未來要登入的帳號

如果你的伺服器支援 ssh-copy-id,這是最簡單的方法:

ssh-copy-id -i ~/.ssh/YOUR_ID_RSA_FILE_NAME.pub -p 22 \
  YOUR_SERVER_ACCOUNT@SERVER_IP_OR_ADDRESS
  • -i: 要上傳的檔案來源位置
  • -p: 伺服器監聽的 ssh port,預設是 22
輸入遠端電腦帳號的密碼,正確的話會長類似這樣:
Number of key(s) added:        1

Now try logging into the machine, with:   "ssh -i ~/.ssh/YOUR_ID_RSA_FILE_NAME -p 22 'YOUR_SERVER_ACCOUNT@SERVER_IP_OR_ADDRESS'"
and check to make sure that only the key(s) you wanted were added.
公鑰會存在伺服器該帳號的 ~/.ssh/authorized_keys

不靠套件,手動加入公鑰的話:

cat ~/.ssh/YOUR_ID_RSA_FILE_NAME.pub | ssh -i YOUR_ID_RSA_FILE_NAME YOUR_SERVER_ACCOUNT@SERVER_IP_OR_ADDRESS 'cat >> ~/.ssh/authorized_keys'
如果伺服器的 authorized_keys 不存在,請建立該檔,並給正確權限:
touch ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
再做一次加入公鑰的步驟

登入 terminal

ssh -i ~/.ssh/YOUR_ID_RSA_FILE_NAME -p 22 'YOUR_SERVER_ACCOUNT@SERVER_IP_OR_ADDRESS'

遇到問題的話,可在伺服器端確認伺服器是否正在執行 ssh server

sudo systemctl status ssh
沒有的話,安裝:
sudo apt install openssh-server

留言

這個網誌中的熱門文章

電話線四芯或二芯(4C或2C)的差別

開機自動執行 Google Chrome App on Mac OS X

RPi 作業系統的 ntp service 相關