谷歌服务器腻子连接“断开连接:没有支持的身份验证方法可用(服务器发送:公钥)

Posted

技术标签:

【中文标题】谷歌服务器腻子连接“断开连接:没有支持的身份验证方法可用(服务器发送:公钥)【英文标题】:Google server putty connect 'Disconnected: No supported authentication methods available (server sent: publickey) 【发布时间】:2013-12-16 03:49:11 【问题描述】:

我正在尝试通过 PuTTy 连接到我的 Debian Google Compute Engine 服务器(我也尝试过其他替代方案),但是当我这样做时,我收到错误“断开连接:没有可用的支持的身份验证方法(服务器发送:公钥)

谷歌服务器没有用户名和密码,只有一个自动登录到自己终端的url。

【问题讨论】:

【参考方案1】:

我让 PuTTY 工作,然后有一天得到了这个错误。

解决方案:我修改了包含我的证书(私钥)的文件夹路径名,这导致 Pageant 丢失了对证书的跟踪,因此是空的。

在我将证书重新安装到 Pageant 后,Putty 又开始工作了。

【讨论】:

如果 Compute Engine SDK 提到您首先需要启动 pageant,那就太好了。我完全忘记了你需要运行这个应用程序并将生成的 SSH 密钥添加到它。 @Gili 你不必...你可以在 Connection->SSH->Auth 下的 PuTTY 中指定密钥。系统将提示您输入私钥密码 或者,只需将私钥添加到选美比赛中就可以了。【参考方案2】:

开启密码验证

默认情况下,您需要使用密钥 ssh 进入您的谷歌计算引擎机器,但您可以打开密码身份验证如果您不需要该级别的安全性 .

提示:使用云控制台中的在浏览器窗口中打开 SSH 选项来访问机器。然后用sudo su - root切换到root用户,进行下面的配置更改。

    编辑/etc/ssh/sshd_config 文件。 将PasswordAuthenticationChallengeResponseAuthentication 更改为yes。 重启ssh /etc/init.d/ssh restart

【讨论】:

现在在使用 gcloud 时要求我输入密码?我不明白这是哪个。 这不是一个好主意,因为您增加了实例受到暴力攻击的可能性。请不要仅在生产环境中在测试实例上使用它,或者将其作为一种简短的解决方法来正确处理您的密钥! 要在 CentOS 7 中重启 ssh,你可以使用 $ service sshd restart 如果启用密码身份验证,仅出于知识考虑,密码是什么? @DevG 它通常在供应商中。对我来说,它位于 .pp 文件中,因为我使用 puppet 进行配置。但是,这应该只用于开发而不是实时使用,因为它是硬编码的。【参考方案3】:

请遵循本指南:https://gist.github.com/feczo/7282a6e00181fde4281b 有图片。

简而言之:

使用 Puttygen,点击“生成”,按照指示移动鼠标并等待

输入您想要的用户名

输入您的密码

保存私钥

复制'Public key for paste into OpenSSH authorized_keys file'窗口的全部内容。确保从头到尾复制每个字符!

转到 Google Cloud Platform Console 中的 Create instances page,然后在高级选项链接中粘贴您的公钥的内容。

在完成后记下实例的 IP 地址。 打开 putty,从左侧菜单转到 Connection / SSH / Auth 并定义保存的密钥文件位置。

从左侧菜单转到连接/数据并定义相同的用户名

输入实例的 IP 地址 将已保存会话下方的连接命名为“GCE”点击“保存” 双击刚刚创建的“GCE”条目 接受主机的身份

现在使用您之前指定的密码登录并运行 sudo su - 一切就绪。

【讨论】:

您能否修复 gist 链接,因为它似乎已损坏...谢谢【参考方案4】:

您需要使用 SSH 密钥登录您的实例。

GCE 文档解释了流程here。

【讨论】:

【参考方案5】:

我遇到了同样的问题,但通过在谷歌云中将 enable-oslogin 从 TRUE 更改为 FALSE 来解决问题。

来自:

到:

【讨论】:

我觉得这很令人费解,因为 Google 的说明一开始就说将其设置为 TRUE。 “要将您的 SSH 密钥提供给实例,请使用以下方法之一:(推荐)启用操作系统登录并使用 IAM 角色通过您的 Google 帐户或托管用户帐户向实例提供您的公共 SSH 密钥。” 我不明白它是如何工作的......【参考方案6】:

我有同样的问题,只是想通了!!

假设您已经创建了私钥/公钥,并在远程服务器上添加了您的公钥...输入 username@remotehost.com 然后转到 Connection -> SSH -> Auth 并单击 Browse 找到您的私钥钥匙。选择后,它将填充输入字段。之后点击 OPEN ...

所以这里重要的是顺序...确保您首先输入主机参数,然后找到您的私钥。

【讨论】:

【参考方案7】:

显然在您的主文件夹上运行 sudo chmod -R a+rw 也会导致这种情况发生。

【讨论】:

【参考方案8】:

我收到此错误是因为我忘记在 GCE 元数据部分的密钥后面添加我的用户名。例如,您应该在元数据部分添加一个条目,如下所示:

sshKeys    username:key

我忘记了username: 部分,因此当我尝试使用该用户名登录时,我得到了不支持的身份验证方法错误。

或者,要完全关闭 ssh 密钥要求,请查看我的 other answer。

【讨论】:

【参考方案9】:

这个问题主要是你连接的用户名没有访问GCE中的shell造成的。所以你使用下面的步骤来解决这个问题。

gcloud auth list

如果您使用的是正确的登录名。请按照以下步骤操作。否则使用

gcloud auth revoke --all
gcloud auth login [your-iam-user]

你得到令牌或者它会自动检测令牌。

gcloud compute --project "projectid" ssh --zone "zone_name" "instance_name" .

如果你不知道上面这一行,请点击compute engine-> ssh dropdown arrow-> view google command-> copy该代码并使用它

现在它会更新您的元数据,并且可以在您计算机的文件夹 Users->username 中找到它

~/.ssh/google_compute_engine.ppk
~/.ssh/google_compute_engine.pub

然后您使用puttygen 创建一个新的ppk 文件并提供您想要的用户名,例如my_work_space。然后 将公钥和私钥保存在一个文件夹中。

下一步:从 puttygen 复制公钥数据并在 gcloud 元数据中创建新的 ssh 密钥

cloud console ->compute engine->metadata->ssh key->add new item->paste the key and save it

现在返回你的shell命令行工具然后输入

sudo chown -R my_work_space /home/my_work_space

现在您使用 sftp 将此私钥连接到任何地方。它打开文件而不显示权限错误

:) 欢乐时光。

【讨论】:

【参考方案10】:

如果私钥是在 Linux 中使用 ssh-keygen 生成的,则需要使用 puttygen 进行转换,因为 Putty 不支持 openssh 密钥。

启动puttygen,点击Conversions - Import key,然后点击Browse,选择openssh生成的私钥,然后点击Save private key。

使用您的新密钥进行连接。

【讨论】:

【参考方案11】:

我遇到了同样的问题,经过几次反复试验后解决了。 在 /etc/ssh/ssh_config 中,设置

PubkeyAuthentication 是

AuthorizedKeysFile .ssh/authorized_keys

没有密码验证

AuthenticationMethods 公钥

然后,打开腻子。 在“已保存的会话”中,输入服务器 IP,通过左侧面板上的路径 Connection->SSH->Auth->Browse 搜索您的私钥并打开它。 最后,在左侧面板回到putty的Session,可以看到服务器IP地址还在“Saved Sessions”字段中,然后点击“Save”,这是关键的一步。 它将让用户不再使用密码登录。 玩得开心,

【讨论】:

【参考方案12】:

下载“PuttyGEN”获取公钥和私钥 使用 gcloud SSH 编辑并粘贴位于 /home/USER/.ssh/authorized_keys 中的公钥

sudo vim ~/.ssh/authorized_keys

点击 i 键粘贴 publicKEY。 要保存,请点击 Esc、:、w、q、Enter。 编辑 /etc/ssh/sshd_config 文件。

sudo vim /etc/ssh/sshd_config

改变

密码验证否 [...] ChallengeResponseAuthentication 为否。 [...] 使用 PAM 否 [...] 重启ssh

/etc/init.d/ssh 重启。

其余的配置你的腻子作为教程 注意:选择选美添加键并开始会话会更好

【讨论】:

【参考方案13】:

电力下降并出现此错误。解决方案是双击您的 .ppk(腻子私钥)并输入您的密码。

【讨论】:

【参考方案14】:

在 rhel7 中,PasswordAuthentication 和 ChallengeResponseAuthentication 默认设置为 NO。

将它们更改为 NO 并重新启动 sshd。

【讨论】:

【参考方案15】:

类似的问题 - 相同的错误消息。尝试使用 ssh 从 bitbucket 克隆某些内容时,我收到了相同的消息。问题出在我在 mercurial.ini 中配置的 ssh 配置中:我使用了错误的 bitbucket 用户名。在我更正用户名后,一切正常。

【讨论】:

【参考方案16】:

对我来说这是我的问题,来自https://unix.stackexchange.com/questions/282908/server-refused-public-key-signature-despite-accepting-key-putty的解决方案

“查看日志 /var/log/secure 表明它完全被拒绝了。我对 centos 有点陌生,因为我主要是一个 debian 类型的人,所以我不知道 /var/log/安全

在检查了这一点并进行了一些搜索之后,如果您只想专门使用密钥进行 root 登录,那么 PermitRootLogin 不需要是 PermitRootLogin without-password。那成功了。感谢大家的贡献。”

【讨论】:

【参考方案17】:

我知道这是一个老问题,但我遇到了同样的问题,感谢this answer。

我经常使用 Putty,从来没有遇到过任何问题。我使用并且一直使用公钥认证。今天,如果不更改任何设置,我就无法再次连接到我的服务器。

然后我看到the answer 并记得我无意中在用户的主目录中运行了chmod 777 .。我从其他地方连接并简单地运行chmod 755 ~。一切立即恢复正常,我什至不必重新启动 sshd。

我希望我从某人那里节省了一些时间

【讨论】:

【参考方案18】:

我收到了同样的错误消息,发现我的错误在于我在 putty 中使用的用户名。显然 GCE SSH 密钥列表会更改您在某些列表中的用户名字符。在我的例子中,下划线改为句号。即:my_username 变为 my.username

我无意中从列表中复制了错误的用户名并收到了相同的错误消息。

【讨论】:

以上是关于谷歌服务器腻子连接“断开连接:没有支持的身份验证方法可用(服务器发送:公钥)的主要内容,如果未能解决你的问题,请参考以下文章

谷歌云实例无法通过腻子连接 - 获取“不支持的身份验证方法可用(服务器发送:公钥)”

腻子中串行连接的字符集编码

将数据从腻子发送到连接在 Arduino 上的蓝牙 HC-6

Amazon Elastic Beanstalk 腻子

如何通过腻子上的控制台访问服务器暂存的数据库 mongodb?

ssh 隧道腻子 - UI 应用程序登录无法从浏览器工作