このエントリーをはてなブックマークに追加


shell request failed on channel 0 の対応方法

sshしたら以下のメッセージが出力されて接続できない。という事象になった場合、以下の設定で解決するかもしれません。
あくまでも原因の一つであり、たの原因かもしれませんが、試してみる価値はあるかもしれません。


shell request failed on channel 0 が出力された時

他のユーザーでssh接続は可能でしょうか?
例えばrootや他のアカウントでssh接続を試して見てください。
もし、接続できるようであれば、ssh接続拒否されているユーザーが多くのプロセスやスレッドを
実行しており、上限に達して接続できない可能性が大です。

また、接続されているターミナルがあった場合、bashなどを起動して見てください。
以下のようなメッセージが表示されませんか?

bash : fork : retry : リソースが一時的に利用できません
bash: fork: retry: Resource temporarily unavailable

多分、ユーザーが起動可能なプロセス(スレッド)を超過しているのが原因です。

試しに、rootで接続できるのであれば、ssh接続出来ないユーザープロセスをkillして見てください。
すんなり、接続出来なかったユーザーアカウントでssh接続できると思います。

そのユーザーアカウントでログインし、以下のコマンドを実行してください。

ulimit -u

この出力で表示される値が、ユーザーが実行可能なプロセス(スレッド)数になります。

対応方法

以下の手順でプロセス(スレッド)数の上限を変更します。

  1. /etc/security/limits.conf の nprocの値を変更します。
  2. 以下の例では、root,一般ユーザに許可するプロセス(スレッド)数を65535にした例です。
    * soft noproc 65535
    * hard noproc 65535
    アスタリスクの部分をユーザーアカウントを指定することができます。
    ちなみに、softはユーザー変更できる上限。
    hardはrootユーザーが変更できる上限になります。
    アスタリスクの部分を@グループ名としてグループ指定することも可能です。
     
  3. 設定を反映を確認する場合、再度ログインし以下のコマンドを実行すれば良いです。
    nprocだけであれば、上記に記したように
    ulimit -u
    全部見たいのであれば、
    ulimit -a
    になります。

以上、shell request failed on channel 0 でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-10-04 (水) 00:56:24