尝试打开 shell 时 SSH 会话挂起

尝试打开 shell 时 SSH 会话挂起

从今天早上开始,我无法再使用 SSH 正常登录我的服务器。

通常,输入以下内容时:

ssh [email protected]

shell 挂起并且未获取 shell。verbose 的最后一行加上 -vv 给了我:

debug2: shell request accepted on channel 0

也就是说,如果我直接在 SSH 中启动命令,例如:

ssh [email protected] 'ls ~'

...它似乎工作正常,并给出了预期的输出。实际上,我可以通过强制 bash 以交互模式启动来获取 shell,方法是输入:

ssh [email protected] 'bash -i'

我也尝试禁用我的 .bashrc 文件(通过将其移动到 .bashrc_OLD),但似乎没有任何帮助。

任何建议都将非常感谢,谢谢!

编辑:我也尝试过使用 sh 登录,但都没有成功。因此,我认为这与配置文件问题无关。

编辑 2:当我设法使用 -i 标志获取 shell 时,这是我从控制台获取的附加消息:

bash: cannot set terminal process group (-1): Invalid argument
bash: no job control in this shell

答案1

我认为您需要检查远程passwd数据库(默认情况下/etc/passwd)并查看其中的 shell(然后您可以通过直接运行它来检查它,就像您已经使用某些命令所做的那样)。除了主目录中的 shell 点文件之外,其他要查找的地方是,/etc/pam.d然后您~/.ssh还应该检查远程目录,特别是如果您使用密钥登录。

终端问题可能意味着bash -i需要一个终端,可以通过以下方式触发ssh -t(直接运行命令时默认是关闭的)。

答案2

看起来您没有安装 /dev/pts(在服务器上)。通过其他方式(物理控制台)登录并安装它,mount -tdevpts pts /dev/pts/然后重试。

如果您无法物理访问您的服务器,您可以从客户端尝试:(未经测试)ssh [email protected] 'mount -tdevpts pts /dev/pts/'

答案3

我遇到过类似的延迟并发现禁用反向 DNS 可以解决问题。

UseDNS no

进入

/etc/ssh/sshd_config

重新启动并尝试

相关内容