Linux與命令列基礎

在自己的 PC 上用 ssh-keygen 建立公開金鑰認證的金鑰對,想不用密碼就以 ssh 連線到伺服器 server1。金鑰的放置方式何者正確?

  1. A把私密金鑰加入伺服器的 ~/.ssh/authorized_keys,公開金鑰只放在自己的 PC 上
  2. B把公開金鑰與私密金鑰都放在伺服器的 ~/.ssh,自己的 PC 上什麼都不留
  3. C把公開金鑰加入伺服器的 ~/.ssh/authorized_keys,私密金鑰絕不離開自己的 PC
查看答案與解析

正確答案:C. 把公開金鑰加入伺服器的 ~/.ssh/authorized_keys,私密金鑰絕不離開自己的 PC

在 SSH 的公開金鑰認證中,伺服器使用登錄在 authorized_keys 中的公開金鑰,確認連線方持有對應的私密金鑰。私密金鑰本身不會被傳送,因此只放在自己的 PC 上,並把權限設為 600 等以免被他人讀取,再以通行碼加以保護。公開金鑰(像 ~/.ssh/id_ed25519.pub 這樣的 .pub 檔案)被他人知道也沒有問題,使用 ssh-copy-id 就能把它加入伺服器的 authorized_keys。在 ssh 之上運作的 scp 或 rsync 傳送檔案時,也會使用同一把金鑰。

  • A. 私密金鑰如其名,不可外流。登錄到伺服器的是公開金鑰。
  • B. 若把私密金鑰放在伺服器上,能進入伺服器的人都能使用那把金鑰。而且手邊沒有私密金鑰就無法認證。
  • C. 正確。在伺服器登錄公開金鑰,私密金鑰則在手邊妥善保護。
練習這個領域 前往領域頁面

Linux與命令列基礎的其他題目

  1. 執行「tar -czf proj.tar.gz proj/」時的動作是下列何者?
  2. 編輯以 Git 管理的檔案 main.c 後,只執行了「git commit -m "fix"」,結果顯示「no changes added to commit」而沒有提交。理由是下列何者?
  3. 在 Git 中執行了 git commit,但團隊共用的 GitHub 儲存庫中還看不到該提交。理由是下列何者?
  4. 在以 Git 管理的專案的 .gitignore 中寫了「build/」,但以前提交過的 build/out.log 的變更,仍持續出現在 git status 中。理由是下列何者?
  5. Linux 的標準目錄與其中存放的內容,下列哪一個組合正確?