Answers:
可以在私钥上设置的密码与SSH服务器或与它的连接无关。为私钥设置通行密码只是密钥所有者可能采取的一种安全措施,以防止万一私钥被盗,第三方访问其远程外壳。
不幸的是,您不能强迫用户使用口令来保护其私钥。有时,需要未受保护的私钥才能自动访问远程SSH服务器。在这种情况下,我强烈建议一个好习惯,是建议用户对known_hosts文件(存储在〜/ .ssh / known_hosts中)进行哈希处理,该文件使用以下命令保留有关用户连接到的远程主机的信息:
ssh-keygen -H -f ~/.ssh/known_hosts
这样,即使第三方获得了未受保护的私钥的访问权,也很难找出该密钥对哪些远程主机有效。当然,清除外壳历史记录对于此技术具有任何价值都是必不可少的。
另外,您还应牢记另一件事,即不允许root用户通过在SSH服务器的配置(sshd_config)中添加以下内容来远程登录:
PermitRootLogin no
另一方面,如果要阻止用户使用密钥进行身份验证,而要使用密码,则应在sshd_config中添加以下内容:
PasswordAuthentication yes
PubkeyAuthentication no
一种缓解措施是使用google authenticator PAM模块插件。通常在官方包装内提供。
这将通过智能手机上的6位代码使2FA可用。
此处的说明: 如何在Ubuntu 16.04上为SSH设置多重身份验证