谷歌服务器腻子连接“断开连接:没有支持的身份验证方法可用(服务器发送:公钥)
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
文件。
将PasswordAuthentication
和ChallengeResponseAuthentication
更改为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