# SSH 設定 環境 : Windows Server 2019 / Windows 10 ## 檢查 OpenSSH ``` Get-WindowsCapability -Online | ? Name -like 'OpenSSH*' ``` ![](https://i.imgur.com/Z5lcJds.png) ## 安裝 OpenSSH server ``` Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 ``` ![](https://i.imgur.com/kw073Pj.png) ## 啟動設置 * 設定自動啟動 ``` Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' ``` * 設置防火牆規則 ``` Get-NetFirewallRule -Name *ssh* ``` ![](https://i.imgur.com/7ThywZh.png) ## 生成 Key ``` ssh-keygen ``` * 輸入檔案名稱及密碼 ![image](https://hackmd.io/_uploads/SJlmFQXfyg.png) * 私鑰: dsplm2021x_key_pedro * 公鑰: dsplm2021x_key_pedro.pub ![](https://i.imgur.com/uigTdLD.png) * 啟動 ssh-agent ``` # By default the ssh-agent service is disabled. Allow it to be manually started for the next step to work. # Make sure you're running as an Administrator. Get-Service ssh-agent | Set-Service -StartupType Manual # Start the service Start-Service ssh-agent # This should return a status of Running Get-Service ssh-agent # Now load your key files into ssh-agent ssh-add ~\.ssh\your_key_files ``` ![](https://i.imgur.com/xLiOba1.png) * 添加 SSH 將私鑰存放至 keygen 時的用戶目錄下 \.ssh,此時是 Administrator。 存放路徑為 C:\Users\Administrator\.ssh\ ``` ssh-add dsplm2021x_key_pedro ``` ![](https://i.imgur.com/ctX2nm8.png) - 沒有 .ssh 資料夾時,創建一個 `mkdir ".ssh"` ![](https://i.imgur.com/dCn4i1H.png) 將 公鑰: dsplm2021x_key_pedro.pub 改名為 authorized_keys authorized_keys 可記錄多筆,求方便直接改名 ![](https://i.imgur.com/gwvBvAR.png) ``` icacls authorized_keys ``` >[icacls](https://learn.microsoft.com/zh-tw/windows-server/administration/windows-commands/icacls):顯示或修改指定檔案上的判別存取控制清單 (DACL),及套用預存的 DACL 到指定目錄中的檔案。 ![](https://i.imgur.com/0WLpERw.png) 有出現 Everyone:(RX) 則移除 ![](https://i.imgur.com/abXaeFs.png) > icacls authorized_keys /remove Everyone 以上 Server 端設置完成。 # 客戶端 環境 Windows 10 ,OpenSSH Client 已安裝。未安裝可以到 設置->應用程式->應用程式與功能 -> 選用功能 -> OpenSSH Client -> 安裝 * 連線至 server 並取得私鑰 PS> ``` cd .ssh sftp administrator@plm2021x.cadip.com.tw ``` sftp> ``` cd .ssh ls get dsplm2021x_key_pedro exit ``` ![](https://i.imgur.com/uiWnNSb.png) * 測試連線 * VScode 安裝 remote-ssh * 設定連線資訊 C:\Users\Pedro\\.ssh\config ``` Host plm2021x.cadip.com.tw HostName plm2021x.cadip.com.tw User administrator IdentityFile C:\Users\Pedro\.ssh\dsplm2021x_key_pedro ``` ![](https://i.imgur.com/O34pwMM.png) * 連線 設置成功的話,只有第一次登入的時候需要打密碼。 ![](https://i.imgur.com/swv0xaC.png) * 輸入 SSH 密碼 ![](https://i.imgur.com/HieG3Zp.png) * 輸入 遠端連線密碼 ![](https://i.imgur.com/ioV4G0R.png) * 新增檔案 開啟資料夾 ![](https://i.imgur.com/U1xypTV.png) 新增一個檔案 ![](https://i.imgur.com/26hSGYF.png) Server 端也同步新增一筆檔案 ![](https://i.imgur.com/wfJbIw0.png) ## OpenSSH Config Host:設定檔名稱。 Port:指定 SSH 連結 port。 HostName: Server 位址(網址/IP)。 User:登入 的帳戶。 IdentityFile:指定要使用的 Private Key 檔。 [OpenSSH config](https://linux.die.net/man/5/ssh_config) ## 0x800f0950 - 離線安裝 SSH Add-WindowsCapability : Add-WindowsCapability 失敗。錯誤碼 = 0x800f0950的解决方法:離線安裝 1.去 github 下載安裝包 ( OpenSSH-Win64.zip ) https://github.com/PowerShell/Win32-OpenSSH/releases 2.解壓縮後,在解壓到的目錄下進入 cmd ,執行: ``` powershell.exe _ExecutionPolicy Bypass -File install-sshd.ps1 ``` 3.安裝後設定開機啟動及啟動 ssh 服務 ``` Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' ``` - sftp 一直連不進來 ## 0x800f0950 - Windows 更新 Add-WindowsCapability : Add-WindowsCapability Failed.error code = 0x800f0950的解决方法:Windows 更新 環境為 Windows R2019,下載安裝更新 1. [KB4470502](https://catalog.update.microsoft.com/Search.aspx?q=KB4470502) - Add-WindowsCapability failed 2. [KB4495667](https://catalog.update.microsoft.com/Search.aspx?q=KB4495667) - OK [reference link](https://github.com/MicrosoftDocs/windowsserverdocs/issues/2074) ## 指令無法辨識 ssh-add ``` ssh-add : 無法辨識 'ssh-add' 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱。請檢查名稱拼字是否正確,如果包含路徑的話,請確認路徑是否正確,然後再試一次。 位於 線路:1 字元:1 + ssh-add ~\.ssh\R2022x_key_pedro + ~~~~~~~ + CategoryInfo : ObjectNotFound: (ssh-add:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundExcept ``` 開啟並設定下載 Find-Module Posh-SSH | Install-Module ![](https://i.imgur.com/zbrAeOx.png) 安裝模組 Get-Command -Module Posh-SSH ![](https://i.imgur.com/mwy1jHT.png) 下載更新 Help 手冊 Get-Help cmdlet/function -Full ![](https://i.imgur.com/Msl2GQ3.png) --- ### 加入 AD ,以新身分登入系統後 .ssh 異常處理 連線至其他 remote server 時,異常訊息 sftp server Bad owner or permissions on C:\\Users\\pedro.ad-net/.ssh/config Connection closed * 解決方法:修正資料夾 C:\Users\pedro.ad-net\.ssh 的安全性權限,先移除繼承再新增即可。 [Ref](https://windowsreport.com/bad-owner-or-permissions-on-ssh-config/) ###### tags: `Java` `SSH`