我find了一篇文章( http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/ ),解释了如何configurationOpenSSH以寻求Google Authenticator代码成功login。
是否可以configurationOpenSSH,以便发生以下情况:
这将是方便的(因为在我的电脑上,我只需要私钥)和安全(因为我可以离开密码authentication启用和安全)。
有什么办法可以完成我想要的吗?
提前致谢。 🙂
可以configuration一个sshd
来要求一个有效的密钥对, 或者对每个请求使用HOTP(新的一次性密码(OTP))基于OATH的authentication – 我正在做。 我很确定Google Authenticator只是另一个OATH实现。
我的全文可以在http://www.teaparty.net/technotes/yubikey-oath.html上阅读,但结果是:
假设您的sshd
已经设置为允许基于公钥的身份validation(大部分都是),请将这两行添加到sshd_config
:
PasswordAuthentication no ChallengeResponseAuthentication yes
安装pam_auth
(这是针对x86_64的面向CentOS的方式):
yum install pam_oath ln -s /usr/lib64/security/pam_oath.so /lib64/security/
使authentication文件/etc/users.oath
,模式600
,所有者root:root
,并使用以下行填充它:
#type username pin start seed HOTP fred - 123a567890123b567890123c567890123d567890
编辑/etc/pam.d/sshd
并添加行
auth required pam_oath.so usersfile=/etc/users.oath window=5 digits=8
如果您对6位HOTP OATH感到满意,跳过digits=8
。 我相信类似的方法可以用于TOTP OATH(每n秒新的OTP),但是我使用的是硬件OATH令牌而不是软件,而且它们是yubikeys,它只做HOTP OATH。
唯一的缺点是,当你没有提供一个有效的密码的时候,你需要input密码之前的OATH密码。 我不能让它反过来,但决定我不在乎那么多; 这个提示很清楚哪个令牌被请求。
你需要追加:
AuthenticationMethods publickey keyboard-interactive
没有publickey
和keyboard-interactive
之间的逗号到/etc/ssh/sshd_config
。 所有其他设置不必改变(只要configuration与给定的howtogeek教程相同)。