windows下openssh server的配置

本文详细介绍了如何在Windows环境下安装和配置OpenSSH,包括下载、配置、用户及组管理、密钥生成、服务启停等关键步骤,并提供了基于密钥认证的访问配置流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 下载
    http://www.mls-software.com/opensshd.html

  2. 配置

 第一、打开一个ms-dos终端,进入openssh/bin目录。
 第二、将计算机上的组导入group文件中。这里分两种情况,第一种是本地,第二种是在域中。分别运行-l和-d参数。如果想将两种组都导入,可以先运行-l的参数再运行-d参数的命令。

mkgroup -l >> ..\etc\group       这是加入本地组的命令
mkgroup -d >> ..\etc\group       这是加入域组的命令

 第三、 将计算机的用户与其密码导入passwd文件中。与上面的组一样,也是分本地和域两种情况。如果没有该文件或没有导入用户的信息。作为server的话,将不能被登陆。

mkpasswd -l [-u <username>] >> ..\etc\passwd       这是加入本地用户的命令
mkpasswd -d [-u <username>] >> ..\etc\passwd       这是加入域用户的命令

如果计算机没有域,只要运行两条命令就可以了(注意我是在openssh/bin目录下运行的):
mkgroup -l >> ..\etc\group         
mkpasswd -l [-u <username>] >> ..\etc\passwd

举例新建了个root管理员用户,密码随便,运行
mkpasswd -l -u root >> ..\etc\passwd
就可以了,用ssh工具就可以连接。
注意:用户必须隶属于Administrators组。如果是域用户,用户名前要加域前缀,如下:YNCLEITAO10是域前缀,bee是用户名
YNCLEITAO10+bee
对应登陆命令 ssh YNCLEITAO10+bee@localhost

另,查看windows账号的命令可参考如下:
whoami 当前登陆账号
net localgroup administrators 查看管理组的成员
  1. 启动opensshd服务
   net start opensshd 
  1. 停止opensshd服务
   net stop opensshd 
  1. 设置基于密钥认证的方式访问
配置OpenSSH for Windows为密钥认证的步骤:
----------------------------------------------------------
1). 创建一个Windows用户ssh专用来SSH远程登陆。
可以在本地安全策略中设置禁止ssh本地登陆,不过这样以来单机调试就不方便了。
----------------------------------------------------------
2). 生成用户信息。这里是生成了所有用户的信息,当然只指定用户ssh也行
.\bin\mkgroup -l >> .\etc\group
.\bin\mkgroup -d >> .\etc\group
.\bin\mkpasswd -l >> .\etc\passwd
.\bin\mkpasswd -d >> .\etc\passwd
----------------------------------------------------------
3). 生成用户ssh的home目录
mkdir home
cd home
mkdir ssh
cd ssh
mkdir .ssh
----------------------------------------------------------
4). 修改cygwin环境默认的home目录
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/home]
"native"="C:\\Program Files\\OpenSSH\\home"
"flags"=dword:0000000a
----------------------------------------------------------
5). 生成密钥
cd bin
mkdir keys
ssh-keygen -t rsa -b 2048 -f keys\rsa2048 -C "This is passphrase hint" -N "This is passphrase"
mkdir keys\.ssh
cat rsa2048.pub > keys\.ssh\authorized_keys
----------------------------------------------------------
6). 将上面生成私转为SSH客户端可使用格式,这里用PuTTY,可用PuTTYgen转为PuTTY用的PPK格式
----------------------------------------------------------
7). 将OpenSSH设置为只接受密钥认证。
这里额外开了sftp服务。另外,StrictModes no选项将告诉OpenSSH不检查用户ssh的home目录的权限设置
Protocol 2
Port 22
HostKey /etc/ssh_host_rsa_key
PermitRootLogin no
PermitEmptyPasswords no
StrictModes no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
#IgnoreUserKnownHosts yes
PasswordAuthentication no
UsePAM no
UsePrivilegeSeparation no
MaxStartups 10:30:60
Subsystem sftp /usr/sbin/sftp-server
----------------------------------------------------------
8). 设置路由器NAT和软件防火墙
NAT设置了映射22号端口的TCP包。
软件防火墙设置允许C:\Program Files\OpenSSH\usr\sbin\sshd.exe侦听TCP port 22。
----------------------------------------------------------
9). 基本上差不多了,要启用或停止OpenSSH服务可
net start opensshd
net stop opensshd
在services.msc里启用或停止也可
注意cygwin环境下将Windows各磁盘映射为/cygdrive/。
### 如何配置Windows防火墙规则以便OpenSSH Server正常工作 为了使 OpenSSH Server 能够正常运行并接受来自外部的连接请求,需要正确配置 Windows 防火墙规则。以下是关于如何实现这一目标的具体描述: #### 1. 自动添加的防火墙规则 在安装 OpenSSH Server 的过程中,安装程序通常会自动添加一条名为 **“OpenSSH SSH Server Preview (sshd)”** 或类似的防火墙入站规则[^1]。此规则默认允许通过 TCP 端口 22 进行通信。 如果未检测到此类规则,则可以通过手动方式创建新的防火墙规则。 --- #### 2. 手动创建防火墙规则 如果没有自动生成的规则或需要调整现有规则,可以按照以下方法操作: - 使用 PowerShell 创建防火墙规则: ```powershell New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 ``` 这条命令的作用是显式地允许传入流量通过 TCP 协议到达本地端口 22[^4]。 --- #### 3. 修改监听端口后的处理 如果更改OpenSSH Server 默认监听的端口号(例如从 22 更改为其他端口),则需同步更新对应的防火墙规则中的 `LocalPort` 参数。假设新端口为 2222,则执行如下命令: ```powershell Set-NetFirewallRule -Name sshd -LocalPort 2222 ``` 这一步骤确保防火墙规则始终匹配实际的服务端口设置。 --- #### 4. 测试与验证 完成以上配置后,建议测试防火墙规则的有效性。可以在同一台服务器上尝试使用 SSH 客户端连接至自身,以排除因防火墙以外的因素引起的连接失败问题[^5]。例如,在终端中输入: ```bash ssh localhost ``` 如果仍然遇到连接问题,考虑临时禁用防火墙以进一步诊断原因: ```powershell Set-NetFirewallProfile -Enabled False ``` 请注意,这只是用于调试目的;完成后应及时恢复防火墙功能。 --- #### 5. 检查当前防火墙规则状态 可通过以下命令查看现有的与 OpenSSH 相关的防火墙规则: ```powershell Get-NetFirewallRule -Name *ssh* ``` 确认是否存在预期的规则以及其属性是否正确设定。 --- #### 总结 合理配置 Windows 防火墙对于保障 OpenSSH Server 正常运作至关重要。无论是依赖于自动化过程还是采取手工干预措施,都应仔细核对各项参数的一致性和准确性。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值