SSH - 软件导致单点登录连接中止

SSH - 软件导致单点登录连接中止

我将在这里提供完整的背景信息,虽然不确定其中一些内容有多么相关,但不会有什么坏处......

所以我有一个运行 ubuntu 服务器 13.10 的虚拟机,最近我将其升级到了 14.04 LTS。

升级后,似乎无法通过 ssh 进入机器。通过本地控制台登录没有问题,ssh 退出也没有问题。

经过一番尝试,我发现 ssh 只会因一个特定用户名而失败。使用第二个用户名后,结果成功了。

我尝试了多个 ssh 客户端,但每次我都会收到针对同一用户的相同错误:

Software caused connection abort.

现在,据我所知,这是由 Windows 本身引起的,所以我想问您,造成这种情况的可能原因是什么?

PuTTY 日志显示公钥认证成功,然后突然毫无原因地断开连接:

Event Log: Access granted
Outgoing packet #0x8, type 90 / 0x5a (SSH2_MSG_CHANNEL_OPEN)
...
Outgoing raw data
...
Event Log: Network error: Software caused connection abort

我尝试过使用多个 ssh 客户端,从多台 Windows 计算机,跨越三个不同的站点,结果总是相同的。一个用户工作正常,另一个用户失败,所以这是否意味着 Ubuntu 机器出了问题?

更新

因此,按照 Chirag64 的建议,ssh 127.0.0.1连接正常,但ssh <baduser>@127.0.0.1失败并显示相同的错误消息。

我已经检查了组成员身份,身份验证和用户 shell,它们都与工作用户匹配。

su baduser允许我更改为该用户,并建立传出 ssh 连接,但是,使用当前用户进行环回的 ssh 连接失败。

它似乎只是由于某种原因而与该某个用户建立的传入连接。

答案1

“软件导致连接中止”意味着服务器正在断开连接,因此您使用哪个客户端程序可能并不重要。

首先要检查的是 Ubuntu 服务器上用户的文件系统权限。检查用户主目录、用户的 .ssh 目录以及 .ssh 目录中文件的权限。将它们与正在工作的用户的相同权限进行比较。OpenSSH 服务器对这些权限非常挑剔,在某些配置中,如果其他人可能修改了用户的文件,它将不允许用户连接。

如果这不能解决问题,并且您具有 Ubuntu 服务器的超级用户访问权限,则可以运行 SSH 守护程序的调试实例,并查看在为该用户获取连接时记录的内容:

/path/to/sshd -ddd -p 10022

这将运行一个监听端口 10022 的副本sshd。它不会将自己置于后台。当您使用客户端连接到它时,它会将调试信息打印到您的终端。希望调试信息能让您更好地了解它断开连接的原因。

如果你还是无法找出问题所在,你可以尝试以下sshd方法strace

strace -f /path/to/sshd -ddd -p 10022

strace将打印程序正在执行的系统调用sshd。在断开连接之前执行的最后几个系统调用sshd可能会让您了解当时它正在检查什么。

答案2

我遇到过类似的问题,每次似乎都是 .bashrc 的问题,尝试清除 .bashrc 和 .bash_profile 中的任何自定义配置。

编辑:针对该特定用户(/home//.bashrc)

相关内容