SSH === [TOC] 本機設定 ~/.ssh/config 遠端設定 ~/.ssh/authorized_keys ### 基本指令 ```bash ssh [使用者名稱]@[主機名稱或IP] ``` #### SSH Key ```bash # 產生 SSH 金鑰對 ssh-keygen -t rsa -b 4096 # Or (使用 -f 需先 cd 至 .ssh) ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f <sshkeyname> # 將公鑰複製到遠端伺服器 ssh-copy-id [使用者名稱]@[主機名稱或IP] ``` #### 測試連線 ```bash ssh -T git@github.com ``` #### 除錯模式 ```bash ssh -v git@github.com ``` #### 結合使用 ```bash ssh -v [使用者名稱]@[主機名稱或IP] # Example: github ssh -vT git@github.com ``` Windows ======= 把 Windows 當成 SSH Sever 1. 在 `設定` 中搜尋 `選用功能 (Optional features)` 安裝 `OpenSSH Server` 2. 開啟 `服務 (Services)` 應用程式 (透過「開始」選單搜尋 services.msc 來開啟) 3. 啟動相關服務 (按 S 來搜尋) 4. 設定防火牆 (入站規則 -> 新增規則 -> 連接埠 -> TCP(22) -> 允許連線) 使用金鑰 ------- ```bash ### 本機 ### ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ### 遠端 ### # 將 本機的~/.ssh/*.pub 移至 遠端的~/.ssh/authorized_keys # authorized_keys 一行一個金鑰 chmod -R 700 ~/.ssh ``` 在 ~/.ssh/config 加入 ```bash # id_rsa: 若有改金鑰檔名, 請換成自己的金鑰檔名 IdentityFile ~/.ssh/id_rsa ``` #### (可選) 將私鑰加到 ssh-agent ```bash eval "$(ssh-agent -s)" ssh-add -K ~/.ssh/id_rsa ``` 避坑 --- ### 金鑰檔案放置位置 管理員帳號若想用 ~/.ssh/authorized_keys,必須註解掉 Match Group administrators 區塊並重啟 sshd - 一般使用者帳號 ``` C:\Users\<username>\.ssh\authorized_keys ``` - 管理員帳號(Administrators 群組成員),預設會讀: ``` C:\ProgramData\ssh\administrators_authorized_keys ``` (由 sshd_config 裡的 Match Group administrators 決定) ### 檔案權限(Windows ACL 很嚴格) 權限太開放會導致「金鑰被完全忽略」而不報錯,只會默默回到密碼登入。在 powershell 執行以下兩行 ```powershell # .ssh icacls "$env:USERPROFILE\.ssh" /inheritance:r /grant "$($env:USERNAME):(R,W)" /grant "SYSTEM:(R,W)" # authorized_keys icacls "$env:USERPROFILE\.ssh\authorized_keys" /inheritance:r /grant "$($env:USERNAME):(R)" /grant "SYSTEM:(R)" # administrators_authorized_keys icacls "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:(R)" /grant "SYSTEM:(R)" ``` ### sshd_config C:\ProgramData\ssh\sshd_config 1. 解開 PubkeyAuthentication 的註解 ```bash PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys ``` 2. 如果不想用管理員專用金鑰檔,把以下註解掉: ```bash # Match Group administrators # AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys ``` ### 重啟 sshd 改完 sshd_config 要重啟服務才會生效,在 powershell 執行: ```powershell # 需系統管理員權限 Restart-Service sshd ``` DGX SSH For Vscode ================== 在本機執行以下動作,以下將 `C:\User\<username>\.ssh` 簡成 `~/.ssh` 1. 在 vscode Extensions 下載 Remote - SSH 2. 將 `config` 移至 `~/.ssh/config` 3. 在 Remote Explore 開啟 DGX 並連線 Example ------- ### config ``` Host DGX HostName 140.123.106.239 User lab120 Port 22 IdentityFile ~/.ssh/dgx ``` ### authorized_keys ``` ssh-rsa ... ssh-rsa ... ```
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.