使用 SSH 連線至容器
請先以 opkssh 產生金鑰,再連線至您的容器。
- 請先連上 NetBird。
- 請先建立訓練容器。
- 下列指令皆在您自己的電腦上執行。
-
安裝 opkssh
winget install openpubkey.opkssh安裝完成後,請開啟新的終端機,再進行下一步。若系統找不到
winget,請參閱問題排除。curl -L https://github.com/openpubkey/opkssh/releases/latest/download/opkssh-linux-amd64 -o opksshchmod +x opksshsudo mv opkssh /usr/local/bin/上述為 x86_64 的網址。若為 ARM64,請將
opkssh-linux-amd64改為opkssh-linux-arm64。 -
設定 Keycloak
此步驟僅需執行一次。請先建立設定檔:
opkssh login --create-config請開啟設定檔:macOS 與 Linux 位於
~/.opk/config.yml,Windows 位於C:\Users\<使用者名稱>\.opk\config.yml。接著在providers:底下加入下列內容:- alias: toolmen issuer: https://keycloak.toolmen.bime.ntu.edu.tw/realms/Toolmen_application client_id: opkssh scopes: openid email access_type: offline prompt: consent redirect_uris: - http://localhost:3000/login-callback - http://localhost:10001/login-callback - http://localhost:11110/login-callback -
產生金鑰
opkssh login toolmen您應該會看到瀏覽器開啟 Keycloak 登入頁面。登入後,金鑰預設儲存至
~/.ssh/id_ecdsa。金鑰每 24 小時過期過期後請重新執行此指令,詳見金鑰過期時。
-
查詢位址並連線
下方影片示範完整流程:在 NetBird 查詢容器的位址並以 SSH 連線,接著重啟容器,再改用新的位址連線。
完整操作約 1 分鐘,可暫停影片並依序操作。 查詢容器的位址
- 開啟 NetBird,在 Peers 分頁的搜尋框輸入您的 SSO ID(例如
aaron),清單會列出您的容器。 - 將滑鼠移至容器名稱,按名稱右側的複製圖示,即可複製 NetBird 網域。名稱下方的 peer IP 也可用相同方式複製,兩者擇一即可。
名稱左側的圓點為灰色並非故障:第一次連線時才會建立連線。
使用終端機查詢
請將
<sso-id>替換為您的 SSO ID。Windows 請執行:netbird status -d | findstr <sso-id>macOS 與 Linux 請執行:
netbird status -d | grep <sso-id>您應該會看到<peer 名稱>.netbird.toolmen:
兩個指令的結果相同,此行不含結尾的冒號即為 NetBird 網域。若另外出現以
FQDN:開頭的一行,那是您自己的電腦,請勿使用。以 SSH 連線
請將
<sso-id>替換為您的 SSO ID,<peer-ip>替換為剛才複製的 NetBird 網域或 peer IP:ssh <sso-id>@<peer-ip>您應該會看到第一次連線至此位址時,SSH 會詢問
Are you sure you want to continue connecting,請輸入yes。連線成功後,即進入容器的命令列。無法連線?
容器重啟後
容器重啟後 IP 與網域會變更舊的位址將無法連線:以舊的位址執行
ssh時不會有回應,請按 Ctrl+C 結束。- 在 NetBird 再次搜尋您的 SSO ID。清單會暫時同時列出舊的與新的 peer,請使用名稱與先前不同的新 peer;舊的 peer 已離線,數分鐘後會從清單消失。
- 以新的位址重新連線。由於位址不同,SSH 會再次詢問
Are you sure you want to continue connecting,請輸入yes。
使用 SSH config
您也可以將設定寫入
~/.ssh/config:Host just-name HostName <peer-ip 或 NetBird 網域> Port 22 User <sso-id>Host:自訂的名稱。HostName:peer IP 或 NetBird 網域皆可。容器重啟後請更新此值。User:您的 SSO ID。
設定完成後,使用此名稱即可連線:
ssh just-name資料請存放於/home/nas存放於家目錄與
/home/nas以外的資料將會遺失。 - 開啟 NetBird,在 Peers 分頁的搜尋框輸入您的 SSO ID(例如
金鑰過期時
金鑰每 24 小時過期。若連線時 SSH 要求輸入密碼,例如出現 <sso-id>@<peer-ip>'s password:,表示金鑰已過期,請依下列方式更新。
請按 Ctrl+C 結束,不需要輸入密碼,再重新產生金鑰:
opkssh login toolmen
瀏覽器開啟並顯示 You may now close this window,即可關閉該分頁;若出現 Keycloak 登入頁面,請先登入。終端機會顯示 Keys generated for identity。
完成後,再次執行原本的 ssh 指令即可連線。
如有問題,請參閱聯絡窗口。