Google服务器putty connect'已断开连接:没有可用的支持身份验证方法(服务器已发送:publickey)

时间:2013-11-29 22:50:56

标签: ssh google-cloud-platform debian google-compute-engine putty

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

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

17 个答案:

答案 0 :(得分:25)

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

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

一旦我将证书重新安装到Pageant,那么Putty就会重新开始工作。

答案 1 :(得分:17)

打开密码验证

默认情况下,您需要使用密钥ssh到Google计算引擎计算机,但如果您不需要这种安全级别,则可以打开密码身份验证

  

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

enter image description here

  1. 修改/etc/ssh/sshd_config文件。
  2. PasswordAuthenticationChallengeResponseAuthentication更改为yes
  3. 重新启动ssh /etc/init.d/ssh restart

答案 2 :(得分:8)

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

GCE文档解释了流程here

答案 3 :(得分:6)

请按照以下指南操作:https://gist.github.com/feczo/7282a6e00181fde4281b 与图片。

简而言之:

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

  • 输入您想要的用户名

  • 输入您的密码

  • 保存私钥

'公钥的全部内容复制到OpenSSH authorized_keys文件' 窗口中。确保从开头到最后复制每一个字符!

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

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

从左侧菜单转到Connection / Data并定义相同的用户名

  • 输入实例的IP地址
  • 将保存的会话下面的连接命名为' GCE'点击'保存'
  • 双击' GCE'你刚刚创建的条目
  • 接受主持人的身份

现在使用您之前指定的密码登录并运行 sudo su - 你已经完成了。

答案 4 :(得分:4)

我遇到了同样的问题,只是想出来了!

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

因此,重要的是订单...确保首先输入主机的参数,然后找到您的私钥。

答案 5 :(得分:2)

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

sshKeys    username:key

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

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

答案 6 :(得分:2)

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

答案 7 :(得分:1)

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

启动puttygen,然后单击Conversions - Import键,然后单击Browse并选择使用openssh生成的私钥,然后单击Save private key。

使用新密钥进行连接。

答案 8 :(得分:1)

电力下降并出现此错误。解决方法是双击.ppk(Putty私钥)并输入密码。

答案 9 :(得分:1)

下载“PuttyGEN”获取publickey和privatekey 使用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

更改

PasswordAuthentication no [...] ChallengeResponseAuthentication为no。 [...] UsePAM没有 [...] 重启ssh

/etc/init.d/ssh restart。

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

答案 10 :(得分:1)

此问题主要是由您连接的用户名无法访问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。然后 将publickey和privatekey保存在文件夹中。

下一步:从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将此私钥连接到任何位置。它会打开文件而不显示权限错误

:)欢乐时光。

答案 11 :(得分:1)

我遇到了同样的问题并经过多次试错后解决了。 在/ etc / ssh / ssh_config中,设置

  • PubkeyAuthentication yes

  • AuthorizedKeysFile .ssh / authorized_keys

  • PasswordAuthentication no

  • AuthenticationMethods publickey

然后,打开腻子。 在"已保存的会话"中,输入服务器IP,在左侧面板中浏览Connection-> SSH-> Auth->浏览路径以搜索您的私钥并将其打开。 最后但并非最不重要的一点,回到左侧面板上的putty会话,您可以看到服务器IP地址仍在字段中,"已保存的会话",然后单击"保存",这是至关重要的一步。 它将让用户不再使用密码登录。 玩得开心,

答案 12 :(得分:0)

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

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

答案 13 :(得分:0)

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

答案 14 :(得分:0)

对我来说,这是我的问题,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。做到了。感谢大家的贡献。”

答案 15 :(得分:0)

我遇到了同样的问题,但是通过将Google Cloud中的enable-oslogin从TRUE更改为FALSE使其起作用。

来自:

至: enter image description here

答案 16 :(得分:0)

我知道这是一个古老的问题,但是由于this answer,我遇到了同样的问题并得以解决。

我经常使用腻子,从来没有任何问题。我一直使用公钥身份验证。今天,如果不更改任何设置,我将无法再次连接到服务器。

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

希望我可以节省一些时间