@echo off chcp 65001 >nul title OpenSSH Server 啟用腳本 echo ======================================== echo Windows OpenSSH Server 啟用腳本 echo 請在 UAC 視窗按「是」以管理員執行 echo ======================================== echo. :: 檢查是否為管理員權限 net session >nul 2>&1 if %errorlevel% neq 0 ( echo ⚠ 需要管理員權限,正重新以管理員身分執行... echo. :: 用 PowerShell 重新以管理員身分執行 powershell -Command "Start-Process cmd.exe -ArgumentList '/c \"%~f0\"' -Verb RunAs" echo 請在彈出的 UAC 視窗中按「是」 pause exit /b ) echo ✅ 已取得管理員權限 echo. :: Step 1: 安裝 OpenSSH Server echo [1/4] 安裝 OpenSSH Server... dism /online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0 /Quiet /NoRestart if %errorlevel% equ 0 ( echo ✅ OpenSSH Server 安裝完成 ) else ( echo ⚠ 安裝可能已存在或出錯,繼續... ) echo. :: Step 2: 設定默認 Shell 為 PowerShell echo [2/4] 設定默認 Shell 為 PowerShell... reg add "HKLM\SOFTWARE\OpenSSH" /v DefaultShell /t REG_SZ /d "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" /f >nul echo ✅ DefaultShell = PowerShell echo. :: Step 3: 啟動 sshd 服務 echo [3/4] 啟動 sshd 服務... sc config sshd start= auto >nul 2>&1 net start sshd >nul 2>&1 sc query sshd | find "RUNNING" >nul if %errorlevel% equ 0 ( echo ✅ sshd 正在運行 (自動啟動) ) else ( echo ❌ sshd 啟動失敗 ) echo. :: Step 4: 防火牆規則 echo [4/4] 設定防火牆規則... netsh advfirewall firewall add rule name="OpenSSH Server (sshd)" dir=in action=allow protocol=TCP localport=22 >nul 2>&1 if %errorlevel% equ 0 ( echo ✅ 防火牆規則已新增 ) else ( echo ✅ 防火牆規則已存在 ) echo. :: Step 5: 設定公鑰 echo 授權 nas-automation 公鑰... if not exist "%USERPROFILE%\.ssh" mkdir "%USERPROFILE%\.ssh" set PUBKEY=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP4Z6pxGIOUywAiepssiYJ0PwDf22KASa4JCAQY1geSU nas-automation set AUTHFILE=%USERPROFILE%\.ssh\authorized_keys if exist "%AUTHFILE%" ( findstr "nas-automation" "%AUTHFILE%" >nul if %errorlevel% equ 0 ( echo ✅ 公鑰已存在 ) else ( echo %PUBKEY%>>"%AUTHFILE%" echo ✅ 公鑰已新增 ) ) else ( echo %PUBKEY%>"%AUTHFILE%" echo ✅ authorized_keys 已建立 ) :: 設定 .ssh 目錄安全權限 echo 設定 SSH 目錄權限... icacls "%USERPROFILE%\.ssh" /inheritance:r /grant:r "%USERNAME%:(R)" "SYSTEM:(F)" "Administrators:(F)" >nul icacls "%AUTHFILE%" /inheritance:r /grant:r "%USERNAME%:(R)" >nul echo. echo ======================================== echo 🎉 OpenSSH Server 啟用完成! echo ======================================== echo. echo 測試連線: echo ssh User@127.0.0.1 hostname echo. pause