sshできません。接続は終了ステータス254で即座に終了します


12

最近覚えているのは、ソフトとハードのmemlock ulimitを無制限に変更することです。今、私はマシンにsshすることができません。

これはsshログです。

Authenticated to IP ([IP]:22).
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: fd 3 setting TCP_NODELAY
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
debug1: Sending env LC_CTYPE = 
debug2: channel 0: request env confirm 0
debug2: channel 0: request shell confirm 1
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted 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
Last login: Wed Aug  6 07:18:07 2014 from IP-SOURCE
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
debug2: channel 0: rcvd eow
debug2: channel 0: close_read
debug2: channel 0: input open -> closed
debug2: channel 0: rcvd close
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
Connection to IP closed.
Transferred: sent 4256, received 2504 bytes, in 0.4 seconds
Bytes per second: sent 9616.9, received 5658.0
debug1: Exit status 254

ここに投稿する前に、私は今まで失敗して次のことを試しました:

  1. によってnorc noprofileログインを試行しています ssh user@host 'bash --noprofile'

  2. ttyを強制する ssh -t user@host

  3. bash_profileを移動しました。によってsshingを試みましたssh user@host

  4. limits.conf読み取られないことを期待してファイルの名前を変更します。

  5. sshサーバーを再起動しました。

  6. knifeas 経由でコマンドを実行するknife ssh "name:server" "come_command"

  7. ssh user@host 'ulimit -l 64'ssh user@host 'ulimit -S -l 64'ssh user@host 'ulimit -H -l 64'ssh user@host 'exec ulimit -H -l 64'

コマンドをインラインで実行するこの方法が機能するかどうかはわかりませんssh user@host "some_command"。単純なディレクトリリストを取得できないためです。私も再起動してみましたssh user@host 'reboot'が、コマンドが実行されたとは思いません。AWSからもマシンを再起動しましたが、失敗しました。

sshを行おうとしているのは、失われた原因ですか?サーバーにSSHで接続する方法はありますか?


1
リモートユーザーのログインシェルがbashの場合、bashは常にssh経由で〜/ .bashrcを読み取ります。それを回避する方法はありません。そこでsftpして、bashrcをそのようにチェック/変更できますか?
ステファンChazelas

Cyber​​Duckを使用してsftpを試行し、SSH_FXP_INITエラーコードを取得しました。
theTuxRacer 2014

また、使用して、より詳細な出力を得ることができる-vオプションを、またはそれ以上のため、-vvそして、さらに多くのためのオプション-vvvオプション。例えばssh -vvv user@host。これにより、問題が発生している場所をより的確に把握できます。
ワーウィック

それを試しました。ここからログを取得しました。
theTuxRacer 14

使用できるマシンへの他のファイル(FTP / HTTP ...?)またはシェル(コンソール?)アクセスがありますか?
ステファンChazelas

回答:


12

変えよう

UsePAM yes

オン

UsePAM no

/etc/ssh/sshd_config(CentOSのため)


それは機能しますが、なぜですか?
FelikZ 2015

1
申し訳ありませんが、理由は覚えていません)
frad sorvensen

ここでSELinuxが機能していますか?コンテキスト/etc/security/limits.confがホースアップされ、pamがそれを使用できなくなったかどうか疑問に思っています。
スティーブ・

これを使用したディストリビューションを使用している場合systemd、私見は悪い解決策です。これによりlogind、セッションを開くことができなくなり、ユーザーがマシンを再起動するときに、ユーザーが予期したとおりに停止しないため、一部のプロセスが開始されます。
ビゴン

私の場合、その理由は、プロセッサーあたりのユーザーのハードオープンフィル制限がより大きいことnr_openです。(nr_openマシンを再起動するとリセットされます):nr_openby cat /proc/sys/fs/nr_openとハードオープンファイルを確認できますulimit -Hn。あなたはまだのsshログインユーザがハードオープンファイルのコンフィグレーションを使用したい場合は、増加する必要がありますnr_opensudo sysctl -w fs.nr_open=NUM_BIGGER_THAN_HARD
新孟

4

同様の問題があり、次の奇妙なメッセージしか表示されないようです。

client_input_channel_req:チャネル0 rtype終了ステータス応答0。

sshしようとしたユーザーには、デフォルトのシェルがありませんでした。

私は以下を実行しました:

chsh -s $(which sh) username 

そして、私はすることができましたssh

注:
実行するとsu username終了コードが返され1(失敗していました)、現在は正常に機能しています。


1
不可解な神聖ながらくた!これも私の問題でした。「システム」ユーザー(HOMEもSHELLもなし)でSFTPを使用してみましたが、認証はできましたが、SFTPまたはSCPまたはSSHを使用できませんでした。これで問題が解決しました。ありがとう!
デイブ

2

Mac OS Xでこの問題に遭遇しましたが、の設定で~/.bashrc問題が発生sshし、機能しましたが機能sftpませんでした。@stéphane-chazelasは、上のコメントで正しい考えを持っているようです。

SSH経由のリモートシステムで、に名前~/.bashrcを変更し~/.bashrc-MOVEDてもう一度試し、機能するかどうかを確認します。次に~/.bashrc、問題を復元して特定します。

私のシステムでは~/.bashrcこれが含まれています:

if [ -z "$PS1" ] ; then
    exit
fi

おそらく犯人だった。


1

今日も同じ問題がありました。最初に気付いたのは、/ var / logが100%であることを修正しましたが、問題は解決しませんでした。sshでログインすることも、GUI経由でログインすることもできませんでしたが、CNTRL + ALT + F2でCLIにアクセスし、その方法でログインすることができました。startxと入力し、/ tmp / .X0-lockが存在するというエラーを受け取りました。

そのファイルを削除し(技術的には/ tmpからすべてを削除しました)、GUIとsshを介してログインできました。


ありがとう!私の場合はそれがされた/home私が使用して検出されている100%まで充填df -hCentOSの7の上に
RAM237

1

カーネルパラメータファイル/etc/security/limits.confのOpenファイル構成を無制限に変更し、接続を失いました。

rootユーザーの通常の状態に戻した後、接続を戻しました。

Wrong Example:
## Example hard limit for max opened files
*        hard   nofile unlimited
root     hard   nofile  unlimited
## Example soft limit for max opened files
*        soft   nofile unlimited
root     soft   nofile unlimited

Correct Ex:
## Example hard limit for max opened files
*        hard   nofile 16000
root     hard   nofile 16000
## Example soft limit for max opened files
*        soft   nofile 16000
root     soft   nofile 16000
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.