创建实例后,我可以使用gcutil或ssh登录。我尝试从实例底部列出的ssh链接进行复制/粘贴,并得到相同的错误消息。
发布于 2013-05-26 06:14:01
权限被拒绝错误可能表示SSH私钥身份验证失败。假设您使用的镜像是从gcutil推荐的Debian或Centos镜像派生的,则可能是以下镜像之一:
-i选项指定私有ssh密钥。如何确定实例上有哪些账号和密钥:
有一个脚本在标准的计算引擎Centos和Debian镜像上每分钟运行一次,它从元数据服务器获取'sshKeys‘元数据条目,并根据需要创建帐户(具有sudoers访问权限)。此脚本要求在sshKeys元数据中使用" account :\n“形式的条目,并且可以将多个条目放入单个帐户的authorized_keys中。(如果需要,也可以创建多个帐户)
在镜像的最新版本中,此脚本通过syslog将其输出发送到串行端口,以及发送到机器上的本地日志。您可以通过gcutil getserialportoutput读取最后1MB的串行端口输出,当机器不通过SSH响应时,这会很方便。
gcutil ssh的工作原理:
gcutil ssh执行以下操作:
$HOME/.ssh/google_compute_engine中查找关键字,并且调用ssh-keygen来为看起来像${USER}:$(cat $HOME/.ssh/google_compute_engine.pub)ssh-keygen的sshKeys的项目元数据条目的当前内容,将该条目添加到项目元数据中,并且等待长达5分钟以等待元数据改变被传播并且等待VM内的脚本通知新条目并创建新account.gcutil ssh使用几个命令行参数调用ssh以连接到VM。有几种方法可以解决这个问题,以及您可以做些什么来修复它们:
sshKeys的脚本,控制台和命令行工具将不会意识到修改sshKeys不起作用,并且上面的许多自动魔术可能会被破坏。ssh,它可能找不到您的.ssh/google_compute_engine密钥。您可以通过使用gcutil ssh或复制ssh公钥(以.pub结尾)并添加到控制台中项目或实例的sshKeys条目来修复此问题。(您还需要输入用户名,可能与您的本地计算机帐户名相同。)gcutil ssh,那么您可能没有.ssh/google_compute_engine.pub文件。您可以使用ssh-keygen创建新的SSH公共/私有密钥对并将其添加到sshKeys,如上所述,也可以使用gcutil ssh创建它们并管理SSH。如果您主要使用控制台,则sshKeys条目中的帐户名可能与您的本地用户名不匹配,您可能需要为SSH提供-l参数。发布于 2014-04-25 17:17:48
确保您的主目录和要连接到的主机上用户的主目录的权限设置为700 (仅拥有用户rwx,以防止其他人看到.ssh子目录)。
然后确保~/.ssh目录也是700 (用户rwx ),并且authorized_keys是600 (用户rw )。
~/.ssh目录中的私钥应该是600或400 (用户rw或用户r)
发布于 2016-05-02 20:28:41
我面对这个问题已经很长时间了。最后是ssh-add的问题。未考虑Git ssh凭据。
检查以下命令是否对您有效:
ssh-addhttps://stackoverflow.com/questions/16729694
复制相似问题