- 我有一台运行 sshd 的服务器。
- 我有一台带有 ssh 密钥的安全机器。我想允许使用安全机器的密钥直接公钥登录服务器。
- 我还有一台带有不同 ssh 密钥的笔记本电脑,如果丢失它可能会受到损害。我想在公钥身份验证之上要求密码,以防密钥被泄露。
这个配置可以实现修改sshd_config
吗?
请注意,这个问题不是关于设置登录的公钥和密码。相反,我正在寻找一种根据公钥选择不同组合的方法。
答案1
一种方法是创建两个具有相同 UID 的用户,然后在sshd_config
使用时Match User
应用不同的登录策略。当然,authorized_keys
为两个用户放置不同的文件。
额外的好处(虽然我没有验证):两个用户可以共享相同的主目录,并且authorized_keys
可以在sshd_config
相应的Match User
部分中指定不同的主目录。
答案2
使用 MATCH 要求多种身份验证方法
不幸的是,它似乎不sshd_config
支持使用给定的公钥作为匹配条件。但是,如果您的安全机器并且您的笔记本电脑始终使用单独的主机地址连接到服务器,因此“匹配”部分可用于要求给定用户使用多种身份验证方法。
将以下 Match 部分添加到sshd_config
Match Host laptop.host.ip.addr, User sshuser
PasswordAuthentication yes
AuthenticationMethods publickey,password
每种身份验证方法都需要在sshd_config
配置中显式启用。这可以在“匹配”部分中完成,以避免更改全局身份验证设置。
该AuthenticationMethods
选项是逗号分隔列表的列表。所以,AuthenticationMethods publickey,password
不同于AuthenticationMethods publickey password
.在前一个示例中,需要公钥和密码身份验证。在后一个示例中,需要公钥或密码身份验证。