当 SSH 进入 Debian 服务器时,“PTY 分配请求在通道 0 标准输入上失败:不是 tty”

当 SSH 进入 Debian 服务器时,“PTY 分配请求在通道 0 标准输入上失败:不是 tty”

我的托管空间 (Debian Wheezy) 服务于两个网站(一个是 WordPress,一个是 Rails)。今天我看到两者都宕机了,我重新启动了服务器。 Rails 站点再次运行,WordPress 站点现在显示连接到数据库时出错。然后在重新启动后(也从 SSH)我通过 SSH 连接到服务器,收到以下消息:

PTY allocation request failed on channel 0
stdin: is not a tty

当我使用 flag 运行时,-v我得到的输出没有什么奇怪的,我认为(只是检查公钥和私钥)。看要旨。

当我按如下方式进行 SSH 时,ssh user@host "/bin/bash -i"登录远程 shell。

我读到另一个答案(它还提供了附加“bin/bash -i”的提示,这很有帮助)我应该手动删除并重新添加文件/dev/pt*。提问者表示,卸载/dev/pts并重新安装它有效。不幸的是我收到错误:

Can't find /dev/pts in /etc/fstab or /etc/mtab

我的/etc/fstab文件如下所示:

#UNCONFIGURED FSTAB FOR BASE SYSTEM

有谁知道发生了什么事以及我该如何解决这个问题?

本地输出tty; ls -l /proc/self/fd

/dev/pts/2
total 0
lrwx------ 1 erwin erwin 64 Sep 13 19:01 0 -> /dev/pts/2
lrwx------ 1 erwin erwin 64 Sep 13 19:01 1 -> /dev/pts/2
lrwx------ 1 erwin erwin 64 Sep 13 19:01 2 -> /dev/pts/2
lr-x------ 1 erwin erwin 64 Sep 13 19:01 3 -> /proc/4389/fd

ls -la /dev/ptmx /dev/pts远程机器上的输出:

crw-rw-rw- 1 root tty  5, 2 Sep 11 00:19 /dev/ptmx

/dev/pts:
total 8
drwxr-xr-x 2 root root 4096 Mar 10  2013 .
drwxr-xr-x 3 root root 4096 Sep 11 00:35 ..

18:10登录ssh root@host "/bin/bash -i"并查看/var/log。除了 cronjob 之外,我还看到一个已编辑的文件:

-rw-r----- 1 root        adm       614306 Sep 15 18:10 auth.log

和系统日志(通过 cronjob)。 Syslog 是一个巧合,因为每 30 分钟就会发生一些与 PHP 相关的事情。

然后我将文件复制scp到本地。

授权日志:

Sep 15 18:10:23 vz1223 sshd[23681]: Accepted publickey for root from [localIp] port 39126 ssh2
Sep 15 18:10:23 vz1223 sshd[23681]: pam_unix(sshd:session): session opened for user root by (uid=0)
Sep 15 18:12:14 vz1223 sshd[23681]: Received disconnect from [localIp]: 11: disconnected by user
Sep 15 18:12:14 vz1223 sshd[23681]: pam_unix(sshd:session): session closed for user root
Sep 15 18:12:29 vz1223 sshd[23700]: Accepted publickey for root from [localIp] port 39160 ssh2
Sep 15 18:12:29 vz1223 sshd[23700]: pam_unix(sshd:session): session opened for user root by (uid=0)
Sep 15 18:12:29 vz1223 sshd[23700]: Received disconnect from [localIP]: 11: disconnected by user
Sep 15 18:12:29 vz1223 sshd[23700]: pam_unix(sshd:session): session closed for user root
Sep 15 18:12:47 vz1223 sshd[23709]: Accepted publickey for root from [localIp] port 39163 ssh2
Sep 15 18:12:47 vz1223 sshd[23709]: pam_unix(sshd:session): session opened for user root by (uid=0)

正如所说,根据umount应该通过运行来回答类似的问题。mount/dev/ptsmount -t devpts -o OPTIONS devpts /dev/pts

当我跑步时,mount我看不到/dev/pts/ 当我跑步时,mount /dev/pts/我得到:can't find /dev/pts in /etc/fstab or /etc/mtab。的输出mount如下:

/home/vz/private/1223 on / type simfs (rw,relatime)<br>
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)<br>
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)<br>
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=6556k,mode=755)<br>
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)<br>
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=39320k)<br>

也许我应该/dev/pts再次安装?

通过跑步进行更多记录ssh -vvv user@host可以得到

namei -lx /dev/pts主机上的结果:

f: /dev/pts
Drwxr-xr-x root root /
drwxr-xr-x root root dev
drwxr-xr-x root root pts

*/edit 6/ 我再次从 SSH 重新启动服务器,并/bin/bash -i通过命令附加了“” reboot,现在终端恢复正常......我不知道出了什么问题,也不知道是什么解决了它,但它再次工作了。

答案1

所以,/dev/pts它是内核中用于pseudot终端的虚拟文件系统s(某种东西;不确定 s 代表什么)。它是一个仅虚拟内核的文件系统,从内核导出一些数据,非常类似于sysfs(/sys) 和procfs(/proc)。文件系统应该使用类型devpts, on挂载/dev/pts

这是一个特殊的文件系统,通常不会出现在 中/etc/fstab,但需要安装它。通常发行版都有初始化脚本或类似的脚本来完成所需的安装;但有时这可能会失败,然后你就会遇到类似的问题。

在基于 systemd 的系统上,这个问题不应该再出现; systemd 负责确保devpts文件系统已安装。

如果您使用不同的初始化系统,则修复可能取决于您使用的发行版。在 Debian 上sysvinitdevpts文件系统由 init 脚本挂载mountdevsubfs.sh。如果您再次遇到此问题,可以执行以下两种操作之一:

  • 跑步/etc/init.d/mountdevsubfs.sh restart
  • 绕过init脚本并手动运行mount -t devpts devpts /dev/pts

相关内容