现象
测试环境,work账户ssh无法登陆,提示connection reset by $IP
排查
通过ssh -v $ip,并未发现有什么异常情况,但在输入密码后,连接还是被reset
尝试使用root账户ssh,可以登陆成功。检查work账户下的.ssh目录,权限正常。
尝试使用su - work
切换到work账户,提示:su: 无法设置用户ID: 资源暂时不可用
。英文提示应该是su: cannot set user id resource temporarily unavailable
。所以ssh无法登陆的原因就是资源暂时不可用,找到原因。
Linux中的“资源限制”,可以通过ulimit -a
来查看,执行出来是这个样子
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 62006
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 62006
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
对照看下自己的资源,是哪部分到达limit值了,重点关注max user process
, open files
具体可以修改/etc/security/limits.conf
文件,制定新的limit value
有意思的一点是,在修改limits.conf时,发现有<type>字段,取值是soft和hard,分别代表什么意思呢
- hard_limit_value >= soft_limit_value
- hard_limit_value是由root在
/etc/security/limits.conf
中设置的,其他用户无权修改 - soft_limit_value用户可以使用
ulimit -S -${param} $value
来自行修改,但参见第1条限制,它不能超过hard_limit_value - soft_limit_value是该用户事实上的limit_value