谷歌计算引擎VM上的双因素身份验证会破坏控制台SSH访问

时间:2017-10-24 12:26:19

标签: ssh google-compute-engine two-factor-authentication

我正在努力加强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按钮时,这是按钮的图片:

gce console ssh connect

它从不登录,只是不断重试报告:

  

将SSH密钥传输到VM。   VM guest虚拟机环境已过时,仅支持已弃用的'sshKeys'元数据项。请按照此处的步骤进行更新。

2FA必须阻止GCE传输它生成的ssh密钥,有没有办法启用它或者它与pam_google_authenticator不兼容?

谢谢!

2 个答案:

答案 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的常规说明之上