我正在努力加强Google Compute Engine虚拟机的安全性,因此我安装并配置了libpam-google-authenticator以使用双因素身份验证。简明扼要地说:
<set up ssh public/private key>
sudo apt-get install libpam-google-authenticator
google-authenticator # follow steps & scan the code with Google Authenticator on your phone
/etc/ssh/sshd_config
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
/etc/pam.d/sshd
# @include common-auth
auth required pam_google_authenticator.so
sudo systemctl restart sshd.service
使用像PuTTY这样的客户端可以正常工作。
具体来说,我遇到的问题是当我在Google Compute Engine控制台页面上尝试HTML SSH按钮时,这是按钮的图片:
它从不登录,只是不断重试报告:
将SSH密钥传输到VM。 VM guest虚拟机环境已过时,仅支持已弃用的'sshKeys'元数据项。请按照此处的步骤进行更新。
2FA必须阻止GCE传输它生成的ssh密钥,有没有办法启用它或者它与pam_google_authenticator不兼容?
谢谢!
答案 0 :(得分:1)
关于以下错误:
VM来宾环境已过时,仅支持已弃用的'sshKeys'元数据项。请按照此处的步骤进行更新。
实例可能已过时VM guest虚拟机环境。 有关详细信息,请查看this documentation。此外,上述错误还有issue report,有一些建议可能对您有用。
编辑:此外,GCE VM上的2-FA是使用Google身份验证器的自定义SSH配置。浏览器中的SSH和通过gcloud功能的SSH可能会失败,因为Google身份验证器与SSH在浏览器或gcloud SSH中配置的基于密钥的SSH机制的机制不同。
答案 1 :(得分:0)
这似乎是重复的 - 2 factor authentication (2 step verification) with Google compute engine
他们似乎已经把它弄清楚了,这里有一些我从那篇文章中得到的:
除了在/etc/pam.d/sshd中添加一行之外,还应该注释掉@include common-auth行。所以它应该是这样的:
auth required pam_google_authenticator.so # from the original instructions
# @include common-auth # commenting out is new...
除了更改/ etc / ssh / sshd_config中的ChallengeResponseAuthentication属性外,还应该在以下行中添加AuthenticationMethods publickey,keyboard-interactive:
ChallengeResponseAuthentication yes # from the original instructions
AuthenticationMethods publickey,keyboard-interactive # this is new...
当然,这是在安装libpam-google-authenticator,更改sshd和sshd_config(如上所述),重新启动ssh / sshd服务以及为帐户设置google-authenticator的常规说明之上