SSHが失敗します:PTY割り当て要求はチャネル0で失敗しました


11

そのため、エラーをグーグルでチェックし、serverfaultをチェックしましたが、解決策は適合しませんでした。ほとんどの結果は/ dev / ptsの問題でしたが、それはマウントされています。他の結果はgitのエラーですが、マシンにはgitがありません。

アカウントはブロックされていませんが、コンソールにログインできます。他のユーザーもこの問題を抱えているので、私の.ssh /にあるものと関係があるとは思わない

私はssh -vvでこの応答を受け取ります:

<snip>
debug1: Next authentication method: password
rogier@server's password: 
debug2: we sent a password packet, wait for reply
debug1: Authentication succeeded (password).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug2: channel 0: request env confirm 0
debug2: channel 0: request shell confirm 1
debug2: fd 3 setting TCP_NODELAY
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel_input_status_confirm: type 100 id 0
PTY allocation request failed on channel 0
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0

この後、セッションはフリーズします。誰が何が起こっているのか考えていますか?


5
ssh user@host "/bin/bash -i"ログインに使用できますか?
ティム

うーん、ええ、
うまくいき

1
/dev/pt*デバイスが破損したため、デバイスを取り外して手動で再追加する必要がある場合があります。その場合、上記の回避策を使用しても機能しました。
ティム

@ティム私は同じ問題を抱えています。でログインすることもできますssh user@host "/bin/bash -i。これを修正するために実行しなければならないコマンドをもっと具体的に教えていただけますか?どうやって復元し/dev/pt*ますか?ありがとう。
アーウィンロイヤッカーズ14

4
@ user2609980 run mount、出力される行の1つは/ dev / ptsである必要があります。オプションに注意してください。OPTIONSをアンマウントする前に観察したオプションに置き換えてumount /dev/pts、アンマウントして再マウントしmount -t devpts -o OPTIONS devpts /dev/ptsます。
ティム14

回答:


10

はい、ティムに感謝します。/ dev / ptsをアンマウントしてから/ dev / ptsをマウントするとうまくいきました。


これは非常に奇妙です。これがなぜそうなのか、何か考えはありますか?これはデバイスドライバーのバグですか?修正されましたか?等...
not2qubit

わからない。そして、私はそれを見たことがありません。
blauwblaatje 14

1
@blauwblaatje同じ問題があります。でログインすることもできますssh user@host "/bin/bash -i。これを修正するために実行しなければならないコマンドをもっと具体的に教えていただけますか?ありがとう。
アーウィンロイヤッカーズ14

覚えている限り、umount / dev / pts && mount / dev / pts
blauwblaatje 14年

私はちょうど問題があり、mkdir /dev/ptsそれが機能する前にしなければなりませんでした。そうでなければ、これで問題は解決しました。
アンジェロフックス

1

私はから接続してみてください、あなたにすべての私の経験を言わせてのlinux、ssh経由でサーバ持っていたのopensshとし、他をfreessh。サーバーにopensshがあれば正常に動作しますが、freesshが実行中のサービスである場合、「シェルリクエストがチャンネル0で失敗しました」というメッセージが表示されるようになりました(ある日から別の日に、 openssh)

私が行ったテストは、別のユーザーから接続を確立しようとすることでした。正常に動作することがわかり、〜/ .ssh(問題を提示しているユーザー)をバックアップし、その後正常に動作します。

関係するファイルはknown_hostsで、パーマもコンテンツと同じように見えますが、それが私が修正した方法です。


1

エラーは、擬似端末を開くことができなかったことを意味します。ほとんどの場合、sshとは関係ありません。sshサーバー側でデバッグするには、http: //rachid.koucha.free.fr/tech_corner/pty_pdip.htmlにあるmyptyのような非常にシンプルなPTYデモを使用して、PTYがまったく割り当てられるかどうかを確認します。そうでない場合は、straceを使用して、失敗した場所を調査します。(私にとっては、https: //www.kernel.org/doc/Documentation/filesystems/devpts.txtで説明されているように、コンテナに/ dev / ptmxシンボリックリンクがありませんでした)


0

LANGとLC設定に依存する可能性がありますが、これは私にとってはうまくいきます:

unset LANG        2>/dev/null
unset LC_MONETARY 2>/dev/null
unset LC_NUMERIC  2>/dev/null
unset LC_MESSAGES 2>/dev/null
unset LC_COLLATE  2>/dev/null
unset LC_CTYPE    2>/dev/null
ssh -l username hostname

2
問題が環境変数LANGLC_*環境変数に関連していると思われるのはなぜですか?
エイドリアンハイネ

これが起こる前に何を変えたのだろうかと思っています。実際にこれらの変数のいくつかを変更しました!それが私にも役立つかどうか見てみましょう。
アーウィンロイヤッカーズ14

0

私の場合、LinuxボックスからWindowsホスト(cygwinおよびその他の関連ソフトウェアを実行)に接続していました。

奇妙なことに、Windowsサーバーへの接続試行は機能しましたが、対話式端末の割り当て中に失敗しました。ssh -vv以下のログを確認してください。

...
Authentication succeeded
...
Entering interactive session
Requesting authentication agent forwarding.
Sending environment.
Sending env LANG = en_US.UTF-8
PTY allocation request failed on channel 4
...

私の同僚は、それが私のものと同じログイン資格情報を使用し、いくつかの自動バッチ操作を行っていたWindowsサーバー上の多くのオープンプロセスのためであると考えました。

一時的にそれを殺し、トリックを行い、私のssh接続を正常に許可しました。

ほとんどの場合、windows + cygwinは、その点で最大の制限がありました。これらのプロセスの実行が完了すると、リソースの割り当てを正しく解除する作業が残ります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.