什麼是SSH

透過網路登入其他電腦並執行指令時,將通訊加密的協定(及其指令)。伺服器預設在 TCP 的22號連接埠等待連線。認證除了密碼,也常用公開金鑰認證,把與手邊私密金鑰對應的公開金鑰登錄到伺服器的 ~/.ssh/authorized_keys。在同一條連線上,也能以 scp 或 rsync 傳送檔案,或進行連接埠轉送。

日文名稱: SSH

「SSH」出現在2領域的3道練習題中(Linux與命令列基礎, 電腦網路基礎等)。

這個名詞所屬的領域: Linux與命令列基礎

公開金鑰認證的機制

以 ssh-keygen 建立私密金鑰與公開金鑰的金鑰對,只把公開金鑰(.pub 檔案)登錄到伺服器的 authorized_keys。連線時,用戶端以私密金鑰產生簽章出示給伺服器,伺服器再以登錄的公開金鑰確認,因此私密金鑰本身不會在網路上傳送。私密金鑰以通行碼保護,交給 ssh-agent 保管,就能減少每次連線時輸入的麻煩。

確認伺服器

第一次連線時,ssh 會顯示伺服器主機金鑰的指紋,接受後記錄在 ~/.ssh/known_hosts。之後若出示與紀錄不同的金鑰,就會發出警告並停止,因此能察覺冒充的伺服器。若沒有更換伺服器等理由卻出現警告,就不應繼續連線。

在設計現場的用法

使用者從自己的 PC 以 ssh 登入執行 EDA 工具的運算伺服器,提交模擬或確認結果。在 ~/.ssh/config 中寫好主機別名、使用者名稱、金鑰檔案與跳板伺服器(ProxyJump),只要 ssh server1 就能連線。有圖形介面的工具,則搭配 X11 轉送或遠端桌面的機制使用。

練習SSH的題目

在以 SSH 連線的伺服器上,用「./run.sh &」啟動耗時的處理後中斷連線,結果處理也停止了。要讓處理在中斷連線後繼續執行,最適當的啟動方式是下列何者?

  1. A./run.sh > run.log 2>&1 &
  2. Bnice -n 19 ./run.sh > run.log 2>&1 &
  3. Cnohup ./run.sh > run.log 2>&1 &
查看答案與解析

正確答案:C. nohup ./run.sh > run.log 2>&1 &

連線中斷時,通知終端機掛斷的 SIGHUP 會送給 shell,bash 等 shell 也會把 SIGHUP 送給自己的工作。收到 SIGHUP 時的預設動作是結束,所以背景的工作也會停止。nohup 會讓指令以忽略 SIGHUP 的方式啟動,只要把輸出導向檔案,中斷連線後處理仍會繼續。若從終端機啟動而沒有重新導向輸出,nohup 會把輸出寫入名為 nohup.out 的檔案。使用 tmux 或 screen 等工具,讓終端機的工作階段留在伺服器上,之後再重新連回同一個畫面的方法也很常見。

常見問題

出現「Permission denied (publickey)」而無法連線時,要確認什麼?

確認伺服器的 ~/.ssh/authorized_keys 中是否登錄了與所用私密金鑰對應的公開金鑰,以及連線的使用者名稱是否正確。伺服器端 ~/.ssh 或 authorized_keys 的權限過於寬鬆(其他人可寫入)時,為了安全可能不會使用金鑰,因此要把 ~/.ssh 設為 700、authorized_keys 設為 600 等。加上 ssh -v 會顯示嘗試了哪些金鑰。

scp 與 rsync 要如何區分使用?

兩者都能在 ssh 上傳送檔案。scp 適合單純的複製,rsync 只傳送與目的地的差異,因此在反覆同步大型目錄或重新進行中斷的傳送時很有效率。像 rsync -av --delete 這樣使用,可以讓目的地與來源保持一致,但 --delete 會刪除只存在於目的地的檔案,需要注意。

解析中的「SSH」

出現「SSH」的題目(3題)

  1. 在以 SSH 連線的伺服器上,用「./run.sh &」啟動耗時的處理後中斷連線,結果處理也停止了。要讓處理在中斷連線後繼續執行,最適當的啟動方式是下列何者?
  2. 在自己的 PC 上用 ssh-keygen 建立公開金鑰認證的金鑰對,想不用密碼就以 ssh 連線到伺服器 server1。金鑰的放置方式何者正確?
  3. 下列協定與其伺服器標準使用之連接埠號碼的組合,何者正確?

相關名詞

Shell(命令解譯器) 輸入輸出重新導向 連接埠號碼 HTTP(超文字傳輸協定) DNS(網域名稱系統) 正規表示式 訊號(Unix) 符號連結 硬連結 超級使用者

前往名詞解釋列表