【问题标题】:Remote Git pull using ssh results in Permission denied (publickey)?使用 ssh 进行远程 Git 拉取会导致权限被拒绝(公钥)?
【发布时间】:2013-11-27 16:03:30
【问题描述】:

我在 Atlassian Stash 的托管实例中有一个 git 存储库。然后我有三台机器:olympus、zeus 和 hera,我在其中部署了最新版本的软件系统。为了自动化这个,我想从 olympus 远程部署到我尝试使用 sshgit pull 的其他机器上,但是 Permission denied (publickey). 失败了。我基本上做到了:

azg@olympus:~$ ssh azg@zeus 'cd ~/my/project/release/deploy/location/; git pull'
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

我有以下几点:

  • 每台机器都有不同的 azg 用户(没有时间安装 LDAP 等),所以我有 azg@olympus、azg@zeus 和 azg@hera。我为每个用户生成了 ssh id_rsa 密钥对。
  • 我为每个 azg 用户 authorized_keys 填充了其他用户的相应 id_rsa.pub
  • Stash azg 用户为每个 azg 用户(azg@olympus、azg@zeus、azg@hera)配置了所有 id_rsa.pub 的副本,因此我可以通过 ssh 从每台机器克隆、拉取或推送,而无需输入每次都要密码。因此我不能做任何问题:

    azg@olympus:~/code$ git clone ssh://azg@olympus:7999/pm/pm.git
    Cloning into 'pm'...        
    remote: Counting objects: 555, done.
    remote: Compressing objects: 100% (271/271), done.
    remote: Total 555 (delta 203), reused 555 (delta 203)
    Receiving objects: 100% (555/555), 9.54 MiB, done.
    Resolving deltas: 100% (203/203), done.
    

我可以在每台机器上分别做同样的事情。但是,如果我先远程登录,即每次都要求我输入密钥“/home/azg/.ssh/id_rsa”的密码,例如

azg@olympus:~$ ssh azg@zeus
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.5.0-43-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Wed Nov 27 17:01:33 2013 from olympus
azg@zeus:~$ cdc
azg@zeus:~/code$ git clone ssh://azg@olympus:7999/pm/pm.git
Cloning into 'pm'...
Enter passphrase for key '/home/azg/.ssh/id_rsa':  <<<<<<<<<<< WHY???
remote: Counting objects: 555, done.
remote: Compressing objects: 100% (271/271), done.
remote: Total 555 (delta 203), reused 555 (delta 203)
Receiving objects: 100% (555/555), 9.54 MiB | 145 KiB/s, done.
Resolving deltas: 100% (203/203), done.

【问题讨论】:

    标签: git ubuntu ssh bitbucket-server


    【解决方案1】:

    听起来您在 Zeus 上使用密码创建了 RSA 密钥对。 (这与帐户密码不同;它是用于解密密钥文件本身的密码。)考虑重新生成密钥对,并确保在 ssh-keygen 要求输入密码时不输入任何内容。

    此外,虽然一些安全专家可能不赞成这种做法,但我建议只创建 一个 密钥对并在所有机器上使用它。那么authorized_keys文件只需要一行,在所有主机上都可以相同。

    ::edit:: 正如 OP 在 cmets 中指出的那样,如果您的操作系统坚持让您使用 ssh-agent(我建议禁用),您将需要在所有机器上运行 ssh-add 以获得ssh-agent 停止发出警告。

    【讨论】:

    • 我是否正确地知道我应该只生成一个无密码的 ssh 密钥对并在所有机器上使用它?主机名是否在 pub 文件中扮演任何角色,即 azg@zeus?
    • 是的,我会这样做。不,放在公钥文件行尾的user@host 只是一个注释。这完全无关紧要。我通常用dg99@global替换我的,这仍然没有意义,但个人提醒我,我在很多地方都在使用这个密钥对。
    • 好的,谢谢!只是为了按照您的回答完成,因为我最终会出错Agent admitted failure to sign using the key.,这是在所有机器上运行ssh-add 的问题!请更新答案,我会接受。
    • 我通常不使用ssh-agent,但我知道如果使用它会有多么重要。
    猜你喜欢
    • 2020-07-02
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2019-11-24
    • 2014-11-08
    • 2019-03-11
    相关资源
    最近更新 更多