我正在努力在 Windows 系统上设置 OpenSSH。
我尝试遵循系统安装(例如这) 以及从二进制文件手动安装。我将 OpenSSH 文件复制到 C:\Program Files 中,然后从那里进行安装。
OpenSSH 服务器和代理似乎配置正确,但是当我尝试 ssh 到本地主机时,总是出现以下错误:
Connection reset by ::1 port 22
以下是一些调试命令:
Get-Service ssh-agent
Status Name DisplayName
------ ---- -----------
Running ssh-agent OpenSSH Authentication Agent
Get-Service sshd
Status Name DisplayName
------ ---- -----------
Running sshd OpenSSH SSH Server
netstat -nao | find /i '":22"'
TCP 0.0.0.0:22 0.0.0.0:0 LISTENING 5680
TCP [::]:22 [::]:0 LISTENING 5680
Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled
Name DisplayName Description Enabled
---- ----------- ----------- -------
OpenSSH-Server-In-TCP OpenSSH Server (sshd) True
whoami
pcname\m.ceradini
ssh pcname\m.ceradini@localhost
Connection reset by ::1 port 22
sshd_config 是默认的。根据其他教程的建议,我也尝试在 sshd_config 中注释 Match Group Administrators,但问题仍然存在。
你知道发生了什么吗?我该如何修复这个连接错误?
非常感谢。
更新:
我在这里发布了一些问题和回复的答案。我自己的用户的 SSH 仍然不起作用。
总结一下,我做了以下几件事:
- 卸载 OpenSSH
- 删除所有 .ssh 和 Open-SSH 相关文件夹
- 再次安装 OpenSSH 客户端和服务器(使用 Windows GUI - 从设置) - 然后重新启动
- 检查所有 SSH 相关命令和服务是否正常运行(Get-Command ssh、Get-Command sshd、Get-Command ssh-agent、Get-Service sshd、Get-Service ssh-agent)
- 为用户创建新密钥
- 将公钥添加到 .ssh 文件夹中的 authorized_keys
- “Match Group 管理员”评论道(如上所述这里)在 sshd_config 中
- 在 sshd_config 中启用“PubkeyAuthentication”
- 检查 sshd 服务是否正在运行。
调试
Get-Service sshd
Status Name DisplayName
------ ---- -----------
Running sshd OpenSSH SSH Server
由于默认配置中的 sshd 不会为环回设备提供服务,如果您之前没有在该端口启动隧道,则 localhost 作为远程通常将不起作用:
请执行以下命令:
ssh 电脑名
whoami
pcname\m.ceradini
ssh -v pcname\m.ceradini
OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
ssh: Could not resolve hostname pcname\\m.ceradini: No such host is known.
如果找不到主机,则使用本地 IP 地址,但不是 127.0.0.1,也不是 ::1
ssh -v 192.168.83.185
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ssh-ed25519
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: SSH2_MSG_KEX_ECDH_REPLY received
debug1: Server host key: ssh-ed25519 SHA256:v7C8pJ1ci+e/ZJKhgyIvZfENRyQHd0sUJSXv8PXIEDM
debug1: load_hostkeys: fopen C:\\Users\\m.ceradini/.ssh/known_hosts2: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts2: No such file or directory
debug1: Host '192.168.83.185' is known and matches the ED25519 host key.
debug1: Found key in C:\\Users\\m.ceradini/.ssh/known_hosts:1
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 134217728 blocks
debug1: Will attempt key: sssapisa\\m.ceradini@TNE-Matteo ED25519 SHA256:ugTj7Iu5c0ZbiXgF6yMPO8Hru3rLp5ynP+Aku15WKX0 agent
debug1: Will attempt key: C:\\Users\\m.ceradini/.ssh/id_rsa RSA SHA256:WgcHzwF1tPBwnvdmy9KriQjn+qLuDbOhR80Bmpw10O0
debug1: Will attempt key: C:\\Users\\m.ceradini/.ssh/id_dsa
debug1: Will attempt key: C:\\Users\\m.ceradini/.ssh/id_ecdsa
debug1: Will attempt key: C:\\Users\\m.ceradini/.ssh/id_ecdsa_sk
debug1: Will attempt key: C:\\Users\\m.ceradini/.ssh/id_ed25519
debug1: Will attempt key: C:\\Users\\m.ceradini/.ssh/id_ed25519_sk
debug1: Will attempt key: C:\\Users\\m.ceradini/.ssh/id_xmss
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,[email protected],ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected]>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering public key: sssapisa\\m.ceradini@TNE-Matteo ED25519 SHA256:ugTj7Iu5c0ZbiXgF6yMPO8Hru3rLp5ynP+Aku15WKX0 agent
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Offering public key: C:\\Users\\m.ceradini/.ssh/id_rsa RSA SHA256:WgcHzwF1tPBwnvdmy9KriQjn+qLuDbOhR80Bmpw10O0
debug1: Server accepts key: C:\\Users\\m.ceradini/.ssh/id_rsa RSA SHA256:WgcHzwF1tPBwnvdmy9KriQjn+qLuDbOhR80Bmpw10O0
debug1: Authentication succeeded (publickey).
Authenticated to 192.168.83.185 ([192.168.83.185]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: filesystem full
debug1: ENABLE_VIRTUAL_TERMINAL_INPUT is supported. Reading the VTSequence from console
debug1: ENABLE_VIRTUAL_TERMINAL_PROCESSING is supported. Console supports the ansi parsing
client_loop: send disconnect: Connection reset
通常您不需要使用用户名,因为 ssh 将默认为您当前的用户。因此排除它可以消除错误源。— 我怀疑您不能使用 pcname\m.ceradini,而只能使用 m.ceradini 作为用户名。— 但我不是主要的 Windows 用户,目前无法验证这一点。
关于用户名,我尝试了所有可能的组合,但结果总是相同的。
答案1
您检查过防火墙设置吗?
c:\Windows\system32\Firewall.cpl
查看所用(所需)网络类型中允许的应用程序以获得第一条提示。
然后你继续详细检查:
看看“高级设置 > 传入规则”并检查是否有一条规则允许从“本地端口” 22 到 OpenSSH 服务器的 TCP 流量。
更新:
我还尝试完全关闭防火墙,以确保这不是与防火墙相关的问题
谢谢你的信息。不幸的是,这些“好人”的答案
Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled
Name DisplayName Description Enabled
---- ----------- ----------- -------
OpenSSH-Server-In-TCP OpenSSH Server (sshd) True
在调试时并没有真正的帮助,而是填充了 powerpoint。
下一步:
由于默认配置中的 sshd 将不会为环回设备提供服务,localhost
因此如果您之前没有在该端口启动隧道,远程通常将不起作用:
请执行以下命令:
ssh pcname
其中 pcname 应该是您电脑的真实主机名,但不能被 替代localhost
。
如果找不到主机,则使用本地 IP 地址,而127.0.0.1
不是::1
ssh 192.168.0.5
通常你不需要使用用户名,因为 ssh 将默认为你当前的用户。因此排除它可消除错误源。— 我怀疑你必须不是使用pcname\m.ceradini
但仅m.ceradini
作为用户名。——但我不是 Windows 的主要用户,目前无法验证这一点。
如果失败,请使用详细模式和提供扩展输出:
ssh -v pcname