我家里有一台运行 elementary OS 0.2 的机器,内存非常小,交换空间总是快满了(我会尽快升级内存。)它有一个使用公钥身份验证设置的 OpenSSH 服务器。今天登录时,它要求我输入密码。我将我的公钥重新添加到远程 authorized_keys 文件中,公钥身份验证又开始工作了。我猜是文件上有锁,当我写入文件时,锁被解除了。
我对这种情况的解释正确吗?问题的可能原因是 authorized_keys 文件被锁定了吗?而且,完整的交换分区是否会导致文件锁定问题?
答案1
不幸的是,您的问题与具体应用和场景/情况有关。简短的回答是,不可以(或者更确切地说不应该)。
您的交换分区应被视为 RAM 的扩展。为了防止您的 SWAP 被填满,您可以(在获得更多 RAM 之前)尝试扩大您的 SWAP 分区。但也要获得更多 RAM,因为 SWAP 的速度可能比 RAM 慢 1000 倍。
因此,要全面回答您的问题,请问以下问题:当 PC(以及它正在运行的应用程序)的 RAM 耗尽时会发生什么?或者 RAM 和 SWAP 耗尽时会发生什么?
它会拒绝启动新的应用程序...它会拒绝向请求内存的应用程序提供新的内存块(如果这些应用程序可以从这种拒绝中恢复,它们将记录错误并继续运行,大多数应用程序将崩溃或正常退出,因为如果它们无法分配内存,它们就无法实现其目的)。
因此,如果您的密钥文件确实被锁定(我不否认这种情况可能发生),则很可能是由于与 SSH/SSL 相关的某些问题造成的,例如守护进程由于无法分配内存而挂起,或者守护进程由于上述原因重新启动。
如果使用 openssh-server,请将 /etc/ssh/sshd_conf 更改为不允许密码验证,并尝试重新创建一个 RAM 和 SWAP 空间为零的场景。说实话,我真的怀疑 sshd 会崩溃。