Toggle navigation
Acronis 中文知识库系统
添加
添加
草稿列表
收藏
列表
高级检索
登录
历史
张宏邦
2022-5-25 下午2:01
差异
旧内容
内容
最近,[微软发布了](https://devblogs.microsoft.com/powershell/openssh-for-windows-update/)一个[适用于 Windows 的 OpenSSH ](https://github.com/PowerShell/Win32-OpenSSH) 程序。您可以使用该软件包在 Windows 上设置 SFTP/SSH 服务器。 - 安装 SFTP/SSH 服务器 - 在 Windows 11 和 Windows 10 上 - 在早期版本的 Windows 上 - 配置 SSH 服务器 - 设置 SSH 公钥认证 - 连接到服务器 - 查找主机密钥 - 连接 - 进一步阅读 ## 安装 SFTP/SSH 服务器 ### 在 Windows 11 和 Windows 10 上 - #### 在 Windows 11 上: - 转到***应用程序 > 可选功能***,然后单击*查看功能。*** - 找到***“OpenSSH 服务器”*功能,选择它,单击***下一步***,然后单击**安装***。 - #### 在 Windows 10(版本 1803 及更高版本)上: - 转到***应用程序 > 应用程序和功能 > 可选功能***,然后单击***添加功能***。 - 找到***“OpenSSH 服务器”***功能,展开它,然后选择***安装***。 二进制文件安装在 `%WINDIR%\System32\OpenSSH` 。配置文件 (sshd_config) 和主机密钥安装在 `%ProgramData%\ssh` (仅在服务器第一次启动后)。 如果您想安装比 Windows 内置版本更新的 OpenSSH 版本,您可能仍需要使用以下手动安装。 --- ### 在早期版本的 Windows 上 - 下载最新的 [OpenSSH for Windows 二进制文件](https://github.com/PowerShell/Win32-OpenSSH/releases)(包 `OpenSSH-Win64.zip` 或 `OpenSSH-Win32.zip`) - 以管理员身份将包解压到 `C:\Program Files\OpenSSH` - 以管理员身份安装 sshd 和 ssh-agent 服务: ```powershell.exe -ExecutionPolicy 绕过 -File install-sshd.ps1``` ## 配置 SSH 服务器 - 在 Windows 防火墙中允许到 SSH 服务器的传入连接: - 当作为可选功能安装时,防火墙规则*“OpenSSH SSH Server (sshd)”*应该已经自动创建。如果没有,请继续创建并启用规则,如下所示。 - 以管理员身份运行以下 PowerShell 命令: ```New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH SSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 -Program "C:\Windows\System32\OpenSSH\sshd.exe"``` 将` C:\Windows\System32\OpenSSH\sshd.exe `替换为` sshd.exe `的实际路径(`C:\Program Files\OpenSSH\ssh.exe`,如果您按照上面的手动安装说明进行操作)。 - 或转到*控制面板 > 系统和安全 > Windows Defender 防火墙1 > 高级设置 > 入站规则*并为端口 22 添加新规则。 - 启动服务和/或配置自动启动: - 转到*控制面板 > 系统和安全 > 管理工具并打开服务。找到 OpenSSH SSH Server *服务。 - 如果您希望服务器在您的机器启动时自动启动:转至***操作 > 属性***。在“属性”对话框中,将***“启动类型”***更改为***“自动”***并确认。 - 通过单击启动服务启动 *OpenSSH SSH Server *服务。 这些说明部分基于[官方部署说明](https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH)。 ## 设置 SSH 公钥认证 遵循在 *nix OpenSSH 服务器中[设置 SSH 公钥身份验证](https://winscp.net/eng/docs/guide_public_key)的通用指南,有以下区别: - 在您的 Windows 帐户配置文件文件夹(通常在 `C:\Users\username\.ssh`)中创建 `.ssh` 文件夹(用于` authorized_keys `文件)。 - 对于 `.ssh `文件夹和 `authorized_keys `文件的权限,重要的是 Windows ACL 权限,而不是简单的 *nix 权限。设置 ACL,使相应的 Windows 帐户成为文件夹和文件的所有者,并且是对它们具有写入权限的唯一帐户。运行 OpenSSH SSH Server 服务的帐户(通常是 `SYSTEM` 或 `sshd`)需要对该文件具有读取权限。 - 但是,对于默认的 Win32-OpenSSH 配置,在 `sshd_config` 中为管理员组中的帐户设置了一个例外。对于这些,服务器对授权密钥文件使用不同的位置:`%ALLUSERSPROFILE%\ssh\administrators_authorized_keys`(即通常为 `C:\ProgramData\ssh\administrators_authorized_keys`)。 ## 连接到服务器 ### 查找主机密钥 在第一次连接之前,通过对每个文件使用 `ssh-keygen.exe` 找出服务器主机密钥的指纹。 在 Windows 命令提示符中,使用: ``` for %f in (%ProgramData%\ssh\ssh_host_*_key) do @%WINDIR%\System32\OpenSSH\ssh-keygen.exe -l -f "%f" ``` 如果需要,将 `%WINDIR%\System32` 替换为 `%ProgramFiles%`。 在 PowerShell 中,使用: ``` Get-ChildItem $env:ProgramData\ssh\ssh_host_*_key | ForEach-Object { . $env:WINDIR\System32\OpenSSH\ssh-keygen.exe -l -f $_ } ``` 如果需要,将 `$env:WINDIR\System32` 替换为 `$env:ProgramFiles`。 你会得到这样的输出: ``` C:\Windows\System32\OpenSSH>for %f in (%ProgramData%\ssh\ssh_host_*_key) do @%WINDIR%\System32\OpenSSH\ssh-keygen.exe -l -f "%f" 1024 SHA256:K1kYcE7GHAqHLNPBaGVLOYBQif04VLOQN9kDbiLW/eE martin@example (DSA) 256 SHA256:7pFXY/Ad3itb6+fLlNwU3zc6X6o/ZmV3/mfyRnE46xg martin@example (ECDSA) 256 SHA256:KFi18tCRGsQmxMPioKvg0flaFI9aI/ebXfIDIOgIVGU martin@example (ED25519) 2048 SHA256:z6YYzqGiAb1FN55jOf/f4fqR1IJvpXlKxaZXRtP2mX8 martin@example (RSA) ```
新内容
内容
最近,[微软发布了](https://devblogs.microsoft.com/powershell/openssh-for-windows-update/)一个[适用于 Windows 的 OpenSSH ](https://github.com/PowerShell/Win32-OpenSSH) 程序。您可以使用该软件包在 Windows 上设置 SFTP/SSH 服务器。 - [安装 SFTP/SSH 服务器](https://kb.tieten.cn/open.knowledge/view/737#markdown-agenda-1) - [在 Windows 11 和 Windows 10 上](https://kb.tieten.cn/open.knowledge/view/737#markdown-agenda-2) - [在早期版本的 Windows 上](https://kb.tieten.cn/open.knowledge/view/737#markdown-agenda-5) - [配置 SSH 服务器](https://kb.tieten.cn/open.knowledge/view/737#markdown-agenda-6) - [设置 SSH 公钥认证](https://kb.tieten.cn/open.knowledge/view/737#markdown-agenda-7) - [连接到服务器](https://kb.tieten.cn/open.knowledge/view/737#markdown-agenda-8) - [查找主机密钥](https://kb.tieten.cn/open.knowledge/view/737#markdown-agenda-9) - [连接](https://kb.tieten.cn/open.knowledge/view/737#markdown-agenda-10) ## 安装 SFTP/SSH 服务器 ### 在 Windows 11 和 Windows 10 上 - #### 在 Windows 11 上: - 转到***应用程序 > 可选功能***,然后单击*查看功能。*** - 找到***“OpenSSH 服务器”*功能,选择它,单击***下一步***,然后单击**安装***。 - #### 在 Windows 10(版本 1803 及更高版本)上: - 转到***应用程序 > 应用程序和功能 > 可选功能***,然后单击***添加功能***。 - 找到***“OpenSSH 服务器”***功能,展开它,然后选择***安装***。 二进制文件安装在 `%WINDIR%\System32\OpenSSH` 。配置文件 (sshd_config) 和主机密钥安装在 `%ProgramData%\ssh` (仅在服务器第一次启动后)。 如果您想安装比 Windows 内置版本更新的 OpenSSH 版本,您可能仍需要使用以下手动安装。 --- ### 在早期版本的 Windows 上 - 下载最新的 [OpenSSH for Windows 二进制文件](https://github.com/PowerShell/Win32-OpenSSH/releases)(包 `OpenSSH-Win64.zip` 或 `OpenSSH-Win32.zip`) - 以管理员身份将包解压到 `C:\Program Files\OpenSSH` - 以管理员身份安装 sshd 和 ssh-agent 服务: ```powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1``` ## 配置 SSH 服务器 - 在 Windows 防火墙中允许到 SSH 服务器的传入连接: - 当作为可选功能安装时,防火墙规则*“OpenSSH SSH Server (sshd)”*应该已经自动创建。如果没有,请继续创建并启用规则,如下所示。 - 以管理员身份运行以下 PowerShell 命令: ``` New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH SSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 -Program "C:\Windows\System32\OpenSSH\sshd.exe" ``` 将` C:\Windows\System32\OpenSSH\sshd.exe `替换为` sshd.exe `的实际路径(`C:\Program Files\OpenSSH\ssh.exe`,如果您按照上面的手动安装说明进行操作)。 - 或转到*控制面板 > 系统和安全 > Windows Defender 防火墙1 > 高级设置 > 入站规则*并为端口 22 添加新规则。 - 启动服务和/或配置自动启动: - 转到*控制面板 > 系统和安全 > 管理工具并打开服务。找到 OpenSSH SSH Server *服务。 - 如果您希望服务器在您的机器启动时自动启动:转至***操作 > 属性***。在“属性”对话框中,将***“启动类型”***更改为***“自动”***并确认。 - 通过单击启动服务启动 *OpenSSH SSH Server *服务。 这些说明部分基于[官方部署说明](https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH)。 ## 设置 SSH 公钥认证 遵循在 *nix OpenSSH 服务器中[设置 SSH 公钥身份验证](https://winscp.net/eng/docs/guide_public_key)的通用指南,有以下区别: - 在您的 Windows 帐户配置文件文件夹(通常在 `C:\Users\username\.ssh`)中创建 `.ssh` 文件夹(用于` authorized_keys `文件)。 - 对于 `.ssh `文件夹和 `authorized_keys `文件的权限,重要的是 Windows ACL 权限,而不是简单的 *nix 权限。设置 ACL,使相应的 Windows 帐户成为文件夹和文件的所有者,并且是对它们具有写入权限的唯一帐户。运行 OpenSSH SSH Server 服务的帐户(通常是 `SYSTEM` 或 `sshd`)需要对该文件具有读取权限。 - 但是,对于默认的 Win32-OpenSSH 配置,在 `sshd_config` 中为管理员组中的帐户设置了一个例外。对于这些,服务器对授权密钥文件使用不同的位置:`%ALLUSERSPROFILE%\ssh\administrators_authorized_keys`(即通常为 `C:\ProgramData\ssh\administrators_authorized_keys`)。 ## 连接到服务器 ### 查找主机密钥 在第一次连接之前,通过对每个文件使用 `ssh-keygen.exe` 找出服务器主机密钥的指纹。 在 Windows 命令提示符中,使用: ``` for %f in (%ProgramData%\ssh\ssh_host_*_key) do @%WINDIR%\System32\OpenSSH\ssh-keygen.exe -l -f "%f" ``` 如果需要,将 `%WINDIR%\System32` 替换为 `%ProgramFiles%`。 在 PowerShell 中,使用: ``` Get-ChildItem $env:ProgramData\ssh\ssh_host_*_key | ForEach-Object { . $env:WINDIR\System32\OpenSSH\ssh-keygen.exe -l -f $_ } ``` 如果需要,将 `$env:WINDIR\System32` 替换为 `$env:ProgramFiles`。 你会得到这样的输出: ``` C:\Windows\System32\OpenSSH>for %f in (%ProgramData%\ssh\ssh_host_*_key) do @%WINDIR%\System32\OpenSSH\ssh-keygen.exe -l -f "%f" 1024 SHA256:K1kYcE7GHAqHLNPBaGVLOYBQif04VLOQN9kDbiLW/eE martin@example (DSA) 256 SHA256:7pFXY/Ad3itb6+fLlNwU3zc6X6o/ZmV3/mfyRnE46xg martin@example (ECDSA) 256 SHA256:KFi18tCRGsQmxMPioKvg0flaFI9aI/ebXfIDIOgIVGU martin@example (ED25519) 2048 SHA256:z6YYzqGiAb1FN55jOf/f4fqR1IJvpXlKxaZXRtP2mX8 martin@example (RSA) ``` ### 连接 启动 WinSCP。将出现登录对话框。在对话框中: - 确保选择了新站点节点。 - 在新站点节点上,确保选择了 SFTP 协议。 - 在主机名框中输入您的机器/服务器 IP 地址(或主机名)。 - 在用户名框中输入您的 Windows 帐户名。如果在域上运行,它可能必须以 user@domain 格式输入。 - 对于公钥认证: - 按高级按钮打开高级站点设置对话框并转到 SSH > 身份验证页面。 - 在私钥文件框中选择您的私钥文件。 - 使用确定按钮提交高级站点设置对话框。 - 对于密码验证: - 在密码框中输入您的 Windows 帐户密码 - 如果您的 Windows 帐户没有密码,则无法使用密码验证(即使用空密码)进行验证,您需要使用公钥验证。 - 使用保存按钮保存您的站点设置。 - 使用登录按钮登录。 - 通过将指纹与上文收集的指纹进行比较来**验证主机密钥**。 如果您无法对服务器进行身份验证并使用 Windows 10 *开发人员模式*,请确保您的 OpenSSH 服务器与*开发人员模式*使用的内部 SSH 服务器不冲突。您可能需要关闭*SSH Server Broker* 和 *SSH Server Proxy* Windows 服务。或者在不同于 22 的端口上运行您的 OpenSSH 服务器。 --- 原文链接:https://winscp.net/eng/docs/guide_windows_openssh_server#windows_older
返回