在Windows server 2008 R2上安装OpenSSH
在 Windows Server 2008 R2 上安装 OpenSSH 稍微有点麻烦,因为这个系统较老,不像 Windows 10+ 或 Windows Server 2019+ 那样内置 OpenSSH 服务。但可以通过第三方手动安装方式来实现。下面是推荐的方法:
⸻
✅ 安装步骤(适用于 Windows Server 2008 R2)
🔧 方法一:使用 Win32-OpenSSH(推荐)
微软官方在 GitHub 上提供了 Win32-OpenSSH(可用于旧系统)
⸻
🔽 第一步:下载 Win32-OpenSSH
1. 打开 Win32-OpenSSH Releases 页面。
2. 找到适合 Windows Server 2008 R2 的版本(推荐 v7.7.2.0 或以下旧版本)。
3. 下载 OpenSSH-Win64.zip(如果是 64 位系统)或 OpenSSH-Win32.zip(32 位)。
⸻
🧩 第二步:解压并放到目标路径
1. 解压文件到一个固定位置,如:
C:\Program Files\OpenSSH
2. 打开命令提示符(管理员权限),执行以下命令将其加入 PATH:
setx PATH "%PATH%;C:\Program Files\OpenSSH"
⸻
🛠️ 第三步:安装 SSH 服务
1. 在管理员命令提示符中进入 OpenSSH 目录:
cd "C:\Program Files\OpenSSH"
2. 安装 sshd 和 ssh-agent 服务:
install-sshd.ps1 (如果是 PowerShell)
或
.\install-sshd.cmd
3. 启动服务并设置为开机自启:
sc start sshd
sc config sshd start= auto
⸻
🔑 第四步:生成 Host Keys(如果未自动生成)
.\ssh-keygen.exe -A
⸻
🧪 第五步:测试连接
尝试从另一台机器通过:
ssh username@your_server_ip
⸻
🔐 可选配置(建议)
• 修改 sshd_config 文件(位于 C:\Program Files\OpenSSH)来配置监听端口、禁止密码登录等。
• 如果遇到 NT SERVICE\SSHD 权限问题,可通过手动添加用户权限解决。
⸻
🧯 注意事项
1. Windows Server 2008 R2 默认不带 PowerShell 5,你可能需要手动安装 Windows Management Framework 5.1 来运行部分脚本。
2. 防火墙要放行 TCP 22 端口:
netsh advfirewall firewall add rule name="OpenSSH" dir=in action=allow protocol=TCP localport=22
⸻
❓需要 GUI 工具?
可以试试:
• Bitvise SSH Server(图形界面,适合不熟命令行的用户)
官网:https://www.bitvise.com/ssh-server
⸻
怎么用密码登录
要在 Windows Server 2008 R2 上用 密码登录 OpenSSH 服务器,你需要确保以下几项配置正确:
⸻
✅ 一、确认服务已启用
先确保 OpenSSH 服务正在运行:
sc query sshd
⸻
✅ 二、编辑配置文件 sshd_config
路径(通常):
C:\Program Files\OpenSSH\sshd_config
打开方法(推荐用管理员权限):
notepad "C:\Program Files\OpenSSH\sshd_config"
检查并确保以下配置项:
PasswordAuthentication yes
PermitRootLogin yes #(或 no,如果你不用管理员登录)
PubkeyAuthentication yes #(可同时支持公钥)
注意:配置项前面不要有 #,那是注释。
⸻
✅ 三、重启 SSH 服务使配置生效
net stop sshd
net start sshd
⸻
✅ 四、用户账号要求
• 登录用的用户账号必须是 本地 Windows 用户,并设置了密码。
• 不能是禁用状态,不能是空密码账户。
• 例如你可以通过命令添加一个用户并设置密码:
net user sshuser YourPassword123! /add
net localgroup "Remote Desktop Users" sshuser /add
⸻
✅ 五、防火墙和端口
确保 22 端口已放行(如果没有放行):
netsh advfirewall firewall add rule name="OpenSSH" dir=in action=allow protocol=TCP localport=22
⸻
✅ 六、测试登录(用 SSH 客户端)
在另一台机器上:
ssh sshuser@your_server_ip
系统将提示输入密码,输入后即可登录。
⸻
命令解释
这两条命令 不是写在配置文件中的,它们是 Windows 命令行(CMD)或 PowerShell 中执行的命令,用于:
⸻
✅ 1. 创建本地用户
net user sshuser YourPassword123! /add
作用:创建一个名为 sshuser 的本地 Windows 用户,密码是 YourPassword123!。
⸻
✅ 2. 给用户添加登录权限(非必须,但推荐)
net localgroup "Remote Desktop Users" sshuser /add
作用:把用户 sshuser 加入 Remote Desktop Users 组(让他具有远程登录的权限),虽然这个组是给远程桌面用的,但有助于一些默认策略授权。
⸻
💡 如果你只想用 OpenSSH 登录,下面这个命令是最关键的:
net user sshuser YourPassword123! /add
⸻
✅ 操作步骤总结:
1. 打开 命令提示符(管理员权限)。
2. 执行以上两条命令。
3. 确保 sshd_config 允许密码登录(PasswordAuthentication yes)。
4. 重启 SSH 服务:net stop sshd && net start sshd。
5. 从远程用 SSH 客户端登录测试。
⸻
权限授予
在 Windows 的命令行(net 命令)中,/add 是一个参数,表示**“添加”**的操作。
⸻
🧾 举例说明
✅ 命令:
net user sshuser YourPassword123! /add
🔍 意思:
• net user:是 Windows 中管理本地用户的命令。
• sshuser:是你要创建的新用户名。
• YourPassword123!:是你为该用户设置的密码。
• /add:表示添加这个用户到本地系统。
🟩 翻译成中文就是:
“创建一个用户名为 sshuser、密码为 YourPassword123! 的本地用户。”
⸻
另一个例子:
net localgroup "Remote Desktop Users" sshuser /add
🔍 含义:
• 把 sshuser 用户 添加到 “Remote Desktop Users” 用户组中。
⸻
🔁 类似的 /delete
net user sshuser /delete
表示:删除名为 sshuser 的用户。
⸻
如果你想深入了解 net user 或 net localgroup 的完整用法,可以在命令行中输入:
net user /?
net localgroup /?
windows power shell 无法运行 .ps1 文件,报错是在此系统中禁止执行脚本,怎么解决?
默认系统不允许运行本地 .ps1 脚本,报错如下:
在此系统中禁止运行脚本。有关详细信息,请参阅 about_Execution_Policies。
✅ 解决方法:更改 PowerShell 执行策略
你需要 以管理员身份运行 PowerShell,然后执行以下命令:
Set-ExecutionPolicy RemoteSigned
系统会提示你确认,输入 Y 并回车。
🔍 各种策略含义(你可以选择适合自己的):
策略名 | 含义 |
---|---|
Restricted | 默认值,不允许执行任何脚本 |
AllSigned | 所有脚本都必须有可信发布者的签名 |
RemoteSigned ✅ | 本地脚本可运行,远程下载的脚本需有签名 |
Unrestricted ⚠️ | 所有脚本都可以运行(安全性低) |
🧪 设置成功后测试
你可以运行:
Get-ExecutionPolicy
确认输出为 RemoteSigned。
然后再尝试运行 .ps1 文件:
.\yourscript.ps1
就不会报错了。
🔐 安全建议:
• 生产服务器建议用 RemoteSigned
• 不要随便改为 Unrestricted
• 如果只想临时允许一次脚本运行,可以用:
powershell -ExecutionPolicy Bypass -File .\yourscript.ps1