Problém
Při pokusu o otevření ssh připojení k systému s konkrétním účtem se nezdařilo „Reset připojení peerem“. Ostatní uživatelé se mohou úspěšně připojit pomocí ssh k tomuto systému.
Níže je příklad znázorňující neúspěšné přihlášení k uzlu [NODE2] s účtem ‚oracle‘.
[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]
Informace o chybě lze nalézt v /var/log/messages log on node [NODE2]:
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
Řešení
Do tohoto systému bylo přidáno více uživatelů. Limitní hodnota „soft nofile “ nebo „soft nproc “ v souboru /etc/security/limits.conf je v platnosti. Soubor /etc/security/limits.conf nastavuje limity systémových prostředků pro každého uživatele.
Například hodnota pro otevřené soubory vrácené lsof je vyšší než limitní hodnota ‘soft nofile’ na uzlu NODE2 pro účet ‘oracle’.
1. Zkontrolujte soubor /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. Zkontrolujte procesy spuštěné uživatelem ‚oracle‘:
[oracle@NODE2 ~]$ ps -u oracle|wc -l 489
3. Zkontrolujte soubory otevřené uživatelem ‚oracle‘:
[oracle@[NODE2] ~]$ /usr/sbin/lsof -u oracle | wc -l 62490
Jakmile určíte limity parametrů, vyřešte problém podle následujících kroků:
1. Upravte /etc/security/limits.conf ručně. Zvyšte hodnotu ‘soft nofile “ dokud se nebude rovnat „hard nofile ‘hodnota. Zvyšte hodnotu ‘soft nproc ‘ dokud se nebude rovnat ‘hard nproc ‘ hodnota.
[oracle@NODE2 ~]$cat /etc/security/limits.conf oracle hard nofile 65535 oracle soft nofile 65535 oracle hard nproc 20480 oracle soft nproc 20480
2. Zkontrolujte, zda problém stále přetrvává:
[oracle@NODE1 ~]$ssh oracle@NODE2 oracle@NODE2's password: Last login: Fri Mar 6 02:33:01 2009 from NODE1
Různé chyby při dosažení jiného nastavení limitu
Chyba se liší, když dosáhne limitu ‚otevřené soubory‘ a ‚maximální počet uživatelských procesů‘ v /etc/profile.
1. Chyba při dosažení limitu „otevřených souborů“:
[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. Chyba při dosažení limitu „maximální počet uživatelských procesů“:
[oracle@NODE1 ~]$ssh oracle@NODE2 oracle@NODE2's password: -bash: ulimit: open files: cannot modify limit: Operation not permitted -bash: fork: Resource temporarily unavailable