几个小时前,我更改了 Windows PC 和 Raspberry Pi 的 IP 地址。在此之前,我能够通过 SSH 毫无问题地连接到 Pi。现在,当我尝试连接时,我收到错误消息,有人正在尝试“一些恶意行为”,我应该联系我的网络管理员。
因此,我备份了我的“已知主机”文件并创建了一个空文件。当我现在通过 Windows 终端通过 SSH 连接时,我得到了以下输出:
我不知道这是什么意思,也不知道我该怎么做。我已经刷新了 Pi,但无济于事。无论我在路由器配置中重置 PC 或 Pi 的网络配置还是两者,错误消息都保持不变。
答案1
讯息
有人在尝试“做一些卑鄙的事”
是改变服务器IP的结果。
这种情况通常出现在,当客户端的用户known_hosts
拥有关于服务器的信息,但存储的部分信息与识别服务器的当前连接参数(即,相同主机密钥的其他 IP 或反之亦然)不同时。
我认为,您灰色的主机名不是主机名,而是 IP 地址。更改服务器的 IP 会触发该消息。使用主机名可以避免这种情况。
(判断您是否正在使用 IP 或主机名是相关的,因此最好替换信息而不是为了隐私而将其删除)
通过删除原始known_hosts
文件,这个错误应该会消失,并由“第一次联系”消息取代,要求将新的主机密钥添加到known_hosts
。
=> 这不是您当前登录问题的一部分。
登录问题
调试日志告诉:
- 您位于使用 OpenSSH_for_Windows_8.1p1 的 Windows 客户端上
- 允许的身份验证方法
publickey
包括password
- 您的客户端存储了多个可用于通过“公钥认证”登录的 ID(正在尝试),
但服务器上的帐户没有至少一个可用 ID 的挂件,/root/.ssh/authorized_keys
因此所有五个请求都失败。
=> 要么您从未使用过这种身份验证方法,要么通过重新刷新您的 Pi 服务器,您消除了已经存在的/root/.ssh/authorized_keys
,从而扼杀了您使用此请求方法的可能性。 - 由于公钥认证失败,SSH 会尝试“密码验证”,但遇到错误:
read_passphrase: can't open /dev/tty: No such file or directory
=> 显然“适用于 Windows 的 OpenSSH”确实知道在哪里输出登录对话框,并且最终在三次允许的尝试后登录失败。
归纳我很确定您问题中的当前信息:
在您进行重大更改之前,您通过公钥认证。
原因:由于你没有更改客户端的相关设置,密码认证失败,这个问题肯定在你做出致命更改之前就已经存在了。但由于你没有意识到这个问题,所以肯定使用了其他可能的身份验证。
/root/.ssh/authorized_keys
由于服务器丢失了原件,服务器无法授权您通过公钥认证并且所有登录尝试均失败。
解决方案
- 修复您的密码验证处理Windows 版 OpenSSH。
由于您没有提供任何有关如何启动 ssh 连接的信息,因此无法给出正确答案。
可能您使用 GUI 工具进行连接。那么只需打开终端窗口并通过命令行启动会话就足够了。
=> 您应该创建一个包含更多细节的新问题来解决这个特定问题。
或者
root/.ssh/authorized_keys
在服务器上恢复或重新创建。
要将密钥添加到authorized_keys
:- 仅将 Windows 客户端上现有(或新创建)的密钥对的公钥复制
C:\Users\???\.ssh\
到您的服务器。 - 在服务器上将公钥添加到用户的
authorized_keys
:
cat <public_key_file> >> ~/.ssh/authorized_keys
- 测试登录
- 仅将 Windows 客户端上现有(或新创建)的密钥对的公钥复制
对于变体 2:如果您难以物理访问服务器的本地控制台,您可能需要下载 Live Linux 并将其安装到 USB 记忆棒上,以通过密码验证连接到服务器并重新应用公钥。
请注意:猎羊犬已经提到使用用户根远程连接不是一个好主意。最好使用普通用户并使用它sudo
获取 root 权限。
答案2
我发现了问题。毫不奇怪,这是我做的。
错误消息中全是“@”符号,告诉我有人在尝试“一些恶意行为”,而且消息还删除了“known_hosts”文件的内容,这非常清楚。但随后我又犯了一个错误,试图以“root”身份登录,而这显然已被禁用。此外,我刚刚意识到,在第一次启动过程后,您无法使用小写用户名登录。
使用用户“test”和密码“test”登录不起作用,但使用用户“Test”和密码“test”登录可以。
所以我想我学到了一些新东西。