通过 SSH 连接到虚拟机并拒绝密码,可从 virt-manager 控制台运行

通过 SSH 连接到虚拟机并拒绝密码,可从 virt-manager 控制台运行

首先,如果某处有重复的帖子,我很抱歉。我搜索了一段时间,但没有找到任何可以解决我的问题的帖子。

这相当烦人。我在我们的网络上创建了一个新的虚拟机,当使用 virt-manager 时,我可以使用用户名和密码顺利登录虚拟机。当我尝试从其他地方 ssh 到虚拟机时,它会拒绝密码,但我知道密码是正确的。我甚至多次更改密码以确保它是正确的。

我通过 ssh 连接的地址肯定也指向正确的虚拟机,我已经对这一切进行了测试。

它仍然可以使用,但是 virt-manager 控制台非常有限,所以我越早找到这个问题的根源越好。顺便说一下,VM 正在运行 ubuntu 12.04。

编辑1 检查了 auth.log,我得到的只是“sshd[29304]:Connection closed by 'server.ip.address' [preauth]”。我还尝试允许以 root 身份登录,甚至在 sshd_config 中完全关闭密码验证,但仍然没有任何效果!然后我打开了“AllowEmptyPasswords”,仍然没有任何效果。

答案1

我建议,假设您和服务器之间没有防火墙,使用 virt-manager 控制台在不同端口上运行 sshd(在调试模式下)。

这将允许您查看更完整的连接日志,包括拒绝让您进入的原因:

`哪个 sshd` -d -p 27

(使用反引号来查找 sshd 只是因为我懒——现代 OpenSSH 需要指定整个路径)

输出结果如下:

# `which sshd` -d -p 27
debug1:sshd 版本 OpenSSH_6.0p1 Debian-3ubuntu1
debug1:读取PEM私钥完成:输入RSA
debug1:检查黑名单文件 /usr/share/ssh/blacklist.RSA-2048
debug1:检查黑名单文件 /etc/ssh/blacklist.RSA-2048
debug1:私人主机密钥:#0 类型 1 RSA
debug1: 读取 PEM 私钥完成: 输入 DSA
debug1:检查黑名单文件 /usr/share/ssh/blacklist.DSA-1024
debug1:检查黑名单文件 /etc/ssh/blacklist.DSA-1024
debug1:私人主机密钥:#1 type 2 DSA
debug1:读取PEM私钥完成:输入ECDSA
debug1:检查黑名单文件 /usr/share/ssh/blacklist.ECDSA-256
debug1:检查黑名单文件 /etc/ssh/blacklist.ECDSA-256
debug1:私人主机密钥:#2 类型 3 ECDSA
调试1:rexec_argv[0]='/usr/sbin/sshd'
调试1:rexec_argv[1]='-d'
调试1:rexec_argv[2]='-p'
调试1:rexec_argv[3]='27'
将 /proc/self/oom_score_adj 从 0 设置为 -1000
debug1:绑定到0.0.0.0上的端口27。
服务器监听 0.0.0.0 端口 27。
debug1:绑定到::上的端口 27。
服务器正在监听::端口 27。
debug1:在调试模式下运行时服务器不会分叉。
debug1:rexec 启动 5 输出 5 newsock 5 pipe -1 sock 8
debug1:复制后的 inetd 套接字:3,3
来自 172.17.172.42 端口 52877 的连接
来自 172.17.172.42 的错误协议版本标识''

这是我使用 telnet 连接并按回车键关闭连接时的日志 - 您应该会得到更完整的错误。我

答案2

尝试确保您使用的是正确的用户名。即使真正的问题是用户名不正确,ssh 也会拒绝正确的密码。

答案3

virt-manager 连接到控制台 - 这与 ssh 连接非常不同。您没有告诉我们有关虚拟机的任何信息 - 但已将其标记为 Ubuntu。那是虚拟机管理程序还是虚拟机?

您说它“拒绝密码” - 但没有提供发生了什么/任何错误消息的详细信息。这是寻求解决方案时最重要的一件事针对问题 - 描述发生了什么 - 而不是您对事件的解释。您的描述暗示建立了 TCP 连接并且身份验证失败。暂时忽略这一点...

首先要做的是尝试 ping 该地址。如果您没有收到回复,则表明存在路由或防火墙问题。如果您收到了回复,则并不意味着您的数据包已发送到正确的地方 - 但我们稍后会讨论这个问题。

接下来尝试与端口 22 建立 TCP 连接。在 Linux 中,我会使用nc -zv $HOSTNAME 22此方法。如果超时,则表示没有服务监听该端口号,或者客户端和服务器之间有防火墙。

如果连接成功,下一步就是尝试ssh -vv $USER@$HOST。如果身份验证失败,则您可能连接到了错误的主机,或者 ssh 服务器可能配置为不接受密码身份验证。如果您连接到了正确的主机,身份验证日志中将有一个条目说明这一点。

我假设 ssh 服务器是 openssh - 但您应该使用 VM 上的包管理器检查安装了哪些软件。

如果该日志条目存在,则检查 sshd_config 配置文件中是否有“PasswordAUthentication yes”(这应该(如果已被注释掉,则为默认值)。

如果是这种情况,那么 PAM 堆栈肯定有问题。尝试使用 ssh -vv 和 sshd_config 的输出再次询问。

相关内容