【问题标题】:How to include ssh private rsa key when accessing git repo via ssh (gitosis)?通过 ssh (gitosis) 访问 git repo 时如何包含 ssh 私有 rsa 密钥?
【发布时间】:2011-10-08 15:02:29
【问题描述】:

此时我已经通过 gitosis 添加了一个 git repo。我使用的手册是http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

  1. 我可以克隆它并通过 ssh 身份验证将其推送到私有和公共 键(在 gentoo 上),但使用 Git 扩展的 windows 用户 不能。 SSH 密钥放在 $HOME/.ssh 中,ssh 要求输入密码。 密码和密码短语(来自私有 ssh 密钥)也不匹配。

  2. Redmine 需要一个裸仓库,所以我从我的 gitosis 克隆了仓库 本地机器并将其移至服务器(redmine + git),然后尝试 像这里显示的一样同步 http://www.redmine.org/projects/redmine/wiki/HowTo_keep_in_sync_your_git_repository_for_redmine 但它再次要求输入密码!当然,我没有让 apache 成为他的 拥有 ssh 密钥来验证 gitosis =_=(Apache 是 redmine bare 的所有者 repo,使其通过 http auth 访问它)

无论如何,问题是如何在访问 gitosis 时使用文件中的私有 ssh 密钥?

===

部分解决! ssh-keygen -t rsa 生成密钥,其名称正是 id_rsaid_rsa.pub。 如果你运行ssh -vvv gitosis@your-server.com,你应该会看到类似于

debug1: Authentications that can continue: publickey,keyboard-interactive
…
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: user@domain-user
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Trying private key: /home/user/.ssh/id_rsa
debug3: no such identity: /home/user/.ssh/id_rsa
debug1: Trying private key: /home/user/.ssh/id_dsa
debug3: no such identity: /home/user/.ssh/id_dsa
debug1: Trying private key: /home/user/.ssh/id_ecdsa
debug3: no such identity: /home/user/.ssh/id_ecdsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup keyboard-interactive

因此,ssh 客户端想要准确命名的文件,否则将切换到下一个身份验证方法(密码)。现在我重命名了我家用机器上的密钥,并且:

user@home ~ $ git clone ssh://git@your-gitosis-server/reponame.git
Cloning into reponame...
Enter passphrase for key '/home/user/.ssh/id_rsa':

万岁,它要求一个密码!顺便说一句,ШIИDOШS™ 用户在生成数十个密钥时仍然存在问题。

更新

如果你使用 OpenSSH,那么你可以在 ~/.ssh 中创建一个名为“config”的文件,并在其中放置如下内容:

Host mygitosisserver.com
IdentityFile ~/.ssh/private-key-for-mygitosisserver-com

【问题讨论】:

    标签: git ssh gitosis gitolite git-extensions


    【解决方案1】:

    Windows 用户也应该能够克隆(使用 ssh),如果他们定义了 %HOME% 环境变量
    默认情况下未定义 HOME。
    它可以引用他们想要的任何目录(通常,一个与%HOMEPATH%相同)


    OP user685107 报告:

    严格按照puttygen密钥生成手册解决了windows用户的问题。
    在 Windows 中制作的新密钥对工作正常

    【讨论】:

    • 那是因为有@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%的git.cmd(Git Extensions中的一种pre-init),所以在git环境中设置了%HOME%。不过,如何导入 ssh 密钥?我回到家,将我的 ssh 密钥从工作站放到 ~/.ssh,试图克隆 git clone ssh://git@my_host/gitosis-admin.git 并发现提示输入密码(通常是一个要求输入密码短语的窗口)。
    • @user685107:如果您使用密码生成了私钥,这似乎很正常。在这种情况下:stackoverflow.com/questions/370030/…stackoverflow.com/questions/6106137/…
    • 当然,密钥是使用密码生成的。但是 Putty 使密钥与 OpenSSH 服务器不兼容。所以我在同一台服务器上为 Windows™ 用户生成了它们。它们不是问题,只是连接总是要求输入密码而不是密码
    • @user685107:每当 ssh 连接要求输入密码时,这意味着在服务器端(在 ~/.ssh/authorized_keys 文件中)未正确发布公钥。你确定那里有正确的公钥吗?
    • 严格按照puttygen生成密钥的手册解决了windows用户的问题。是的,我敢肯定,会导致 /var/spool/gitosis/.ssh/authorized 密钥和 ~/.ssh/ 匹配中的公钥
    【解决方案2】:

    使用 SSH 设置 git push

    使用 ssh-keygen 生成 SSH KEY

    ssh-keygen -t rsa -C "your_github_email@example.com"
    

    Github SSH 连接设置

    1。从本地机器复制 ssh

    cat /home/ubuntu/.ssh/github_rsa.pub
    

    2。转到githubaccount settings页面

    3。点击新建 SSH 密钥

    4。添加标题并从本地粘贴复制的 ssh 密钥

    5。测试 SSH

    ssh -T git@github.com
    

    6。使用 ssh url 代替 https

    更新存储库的远程 URL
    • 从存储库复制 ssh url

    • 使用 ssh URL 复制克隆 - 时钟使用 SSH,如第一个屏幕截图所示

      git remote set-url origin git@github.com:JinnaBalu/GitCheatSheet.git

    7。使用 ssh 测试推送

     git add --all
    
     git commit -am "testing the changes"
    
     git push -u origin master
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-06
      • 2023-03-29
      • 2022-11-18
      • 2018-05-25
      • 1970-01-01
      • 2019-09-30
      • 2014-02-19
      • 2020-11-17
      相关资源
      最近更新 更多