Debian サーバーに SSH で接続すると、「チャネル 0 stdin:tty 以外の PTY 割り当て要求が失敗しました」 [閉じる]

Debian サーバーに SSH で接続すると、「チャネル 0 stdin:tty 以外の PTY 割り当て要求が失敗しました」 [閉じる]

私のホスティングスペース(Debian Wheezy)は、2つのウェブサイト(1つはWordPress、1つはRails)を提供しています。今日、私は両方ともダウンしているのを見て、サーバーを再起動しました。 Railsサイトが再度実行され、WordPressサイトにデータベース接続エラーが表示されるようになりました。その後(SSHでも)再起動した後、SSHを介してサーバーに接続し、次のメッセージを受け取りました。

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

フラグを使用して実行すると、-v出力結果がまったく変わっていないようです(公開鍵と秘密鍵を確認するだけです)。バラよりこれポイント。

次のようにSSHを実行するssh user@host "/bin/bash -i"と、できるリモートシェルにログインします。

私は読んだもう一つの答え(また、「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これはpseudo端末用のカーネルにあるt仮想ファイルシステムs(sが何を意味するのかわからない)です。sysfs(/sys)やprocfs(/proc)など、カーネルから一部のデータをエクスポートする仮想カーネル専用のファイルシステムです。ファイルシステムはdevptsonタイプを使用してマウントする必要があります/dev/pts

これは通常Windowsにはない特別なファイルシステムですが、/etc/fstabインストールが必要です。通常、ディストリビューションには必要なインストールを実行するためのinitスクリプトや同様のスクリプトがありますが、時にはこれが失敗し、同様の問題が発生することがあります。

systemdベースのシステムでは、この問題はもう発生しません。 systemdは、devptsファイルシステムがマウントされていることを確認する役割を果たします。

他の初期化システムを使用している場合、変更は使用しているディストリビューションによって異なります。 Debianでは、sysvinitファイルdevptsシステムはinitスクリプトによってマウントされますmountdevsubfs.sh。この問題が再発生した場合は、次の2つのいずれかを実行できます。

  • 走る/etc/init.d/mountdevsubfs.sh restart
  • 初期化スクリプトをバイパスして手動で実行mount -t devpts devpts /dev/pts

おすすめ記事