問題
特定のアカウントでシステムへの ssh 接続を開こうとすると、「ピアによる接続のリセット」で失敗しました。他のユーザーは、このシステムに ssh で正常に接続できます。
以下は、アカウント「oracle」でのノード [NODE2] へのログインの失敗を示す例です。
[oracle@NODE1]$ ssh oracle@[NODE2] oracle@[NODE2]'s password: Read from remote host [NODE2]: Connection reset by peer Connection to [NODE2] closed.
[oracle@NODE1]$ ssh root@[NODE2] root@[NODE2]'s password: Last login: Fri Mar 6 02:30:55 2009 from [NODE1]
エラー情報は、ノード [NODE2] の /var/log/messages ログにあります:
Feb 29 11:11:11 [NODE2] sshd[7194]: Accepted password for oracle from ::ffff:xx.xx.xx.xx port 24318 ssh2 Feb 29 11:11:11 [NODE2] sshd[7202]: fatal: setresuid 501: Resource temporarily unavailable
解決策
このシステムにさらにユーザーが追加されました。 「soft nofile」の限界値 ' または 'ソフト nproc ‘ /etc/security/limits.conf ファイル内 が有効です。 /etc/security/limits.conf ファイルは、各ユーザーのシステム リソースに制限を設定します。
たとえば、lsof によって返される開かれたファイルの値は、アカウント「oracle」のノード NODE2 の「soft nofile」の制限値よりも高くなります。
1. /etc/security/limits.conf を確認してください:
[oracle@~]$cat /etc/security/limits.conf # /etc/security/limits.conf # #Each line describes a limit for a user in the form: # #Where: # can be: # - an user name # - a group name, with @group syntax # - the wildcard *, for default entry # - the wildcard %, can be also used with %group syntax, # for maxlogin limit # can have the two values: # - "soft" for enforcing the soft limits # - "hard" for enforcing hard limits # - can be one of the following: # - core - limits the core file size (KB) # - data - max data size (KB) # - fsize - maximum filesize (KB) # - memlock - max locked-in-memory address space (KB) # - nofile - max number of open files # - rss - max resident set size (KB) # - stack - max stack size (KB) # - cpu - max CPU time (MIN) # - nproc - max number of processes # - as - address space limit # - maxlogins - max number of logins for this user # - maxsyslogins - max number of logins on the system # - priority - the priority to run user process with # - locks - max number of file locks the user can hold # - sigpending - max number of pending signals # - msgqueue - max memory used by POSIX message queues (bytes) #[domain] [type] [item] [value] oracle hard nofile 65535 oracle soft nofile 4096 oracle hard nproc 20480 oracle soft nproc 2047
2. ユーザー「oracle」が実行するプロセスを確認します。
[oracle@NODE2 ~]$ ps -u oracle|wc -l 489
3. ユーザー「oracle」によって開かれたファイルを確認します。
[oracle@[NODE2] ~]$ /usr/sbin/lsof -u oracle | wc -l 62490
パラメータの制限を特定したら、以下の手順に従って問題を解決してください:
1. /etc/security/limits.conf を変更します 手動で。 「soft nofile」の値を増やします ' hard nofile と等しくなるまで ' 価値。 「ソフト nproc」の値を増やします ' ハード nproc と等しくなるまで '値。
[oracle@NODE2 ~]$cat /etc/security/limits.conf oracle hard nofile 65535 oracle soft nofile 65535 oracle hard nproc 20480 oracle soft nproc 20480
2. 問題がまだ存在するかどうかを確認します:
[oracle@NODE1 ~]$ssh oracle@NODE2 oracle@NODE2's password: Last login: Fri Mar 6 02:33:01 2009 from NODE1
他の制限設定に達したときのさまざまなエラー
/etc/profile の「開いているファイル」と「最大ユーザー プロセス」の制限に達している場合、エラーは異なります。
1. 「開いているファイル」の制限に達したときのエラー:
[oracle@NODE1~]$ssh NODE2 oracle@NODE2's password: -bash: ulimit: max user processes: cannot modify limit: Operation not permitted -bash: /home/oracle/.bash_profile: Too many open files
2.制限「最大ユーザー プロセス」に達したときのエラー:
[oracle@NODE1 ~]$ssh oracle@NODE2 oracle@NODE2's password: -bash: ulimit: open files: cannot modify limit: Operation not permitted -bash: fork: Resource temporarily unavailable