Il problema
Quando si tenta di aprire una connessione ssh a un sistema con un account specifico, non è riuscito con "Connessione ripristinata dal peer". Altri utenti possono connettersi correttamente con ssh a questo sistema.
Di seguito è riportato un esempio che mostra l'accesso non riuscito al nodo [NODE2] con l'account '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]
Le informazioni sull'errore possono essere trovate in /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
La soluzione
Più utenti sono stati aggiunti a questo sistema. Il valore limite di "soft nofile ' o 'soft nproc ' nel file /etc/security/limits.conf è in vigore. Il file /etc/security/limits.conf imposta i limiti sulle risorse di sistema per ogni utente.
Ad esempio, il valore per i file aperti restituiti da lsof è superiore al valore limite di "soft nofile" sul nodo NODE2 per l'account "oracle".
1. Controlla /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. Controlla i processi eseguiti dall'utente 'oracle':
[oracle@NODE2 ~]$ ps -u oracle|wc -l 489
3. Controlla i file aperti dall'utente 'oracle':
[oracle@[NODE2] ~]$ /usr/sbin/lsof -u oracle | wc -l 62490
Una volta identificati i limiti dei parametri, segui i passaggi descritti di seguito per risolvere il problema:
1. Modifica /etc/security/limits.conf manualmente. Aumenta il valore di "soft nofile ' finché non è uguale a 'hard nofile ' valore. Aumenta il valore di "soft nproc ' finché non è uguale a 'hard nproc ' valore.
[oracle@NODE2 ~]$cat /etc/security/limits.conf oracle hard nofile 65535 oracle soft nofile 65535 oracle hard nproc 20480 oracle soft nproc 20480
2. Verifica se il problema persiste:
[oracle@NODE1 ~]$ssh oracle@NODE2 oracle@NODE2's password: Last login: Fri Mar 6 02:33:01 2009 from NODE1
Diversi errori quando vengono raggiunte altre impostazioni di limite
L'errore è diverso quando si raggiunge il limite di "file aperti" e "processi utente max" in /etc/profile.
1. Errore al raggiungimento del limite di "file aperti":
[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. Errore al raggiungimento del limite "max user processs":
[oracle@NODE1 ~]$ssh oracle@NODE2 oracle@NODE2's password: -bash: ulimit: open files: cannot modify limit: Operation not permitted -bash: fork: Resource temporarily unavailable