从今天早上开始,我无法再使用 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
重新启动并尝试