我已经多次连接到 github 并且知道如何生成 ssh 密钥并将其id_rsa.pub放入 github 设置中。但是由于某种原因,这个安装我无法连接。我只是想将私有存储库克隆到新服务器,但是当我克隆时,我得到:
权限被拒绝(公钥)。致命:远端意外挂断
如果我运行:
ssh -T git@github.com
Run Code Online (Sandbox Code Playgroud)
它告诉我我已成功通过身份验证。
我还能尝试什么?我在 bitnami 堆栈上运行它,所以也许这会导致问题?这可能是问题所在,我只是不知道该怎么办。.ssh/authorized_keys 目录中已经有一组密钥。我不理会这些,因为这就是我与腻子/pagent 连接的方式。我将新密钥放在 /.ssh 中并单独留下了 authorized_keys。设置它的正确方法是什么?我应该删除两对并重新开始吗?putty 和 github 使用相同的密钥?如果出现问题,为什么我仍然进行身份验证?
您是否尝试过创建新的 SSH 证书,即密钥对?
1 生成默认密钥对:
$ ssh-keygen -t rsa -C "defaultuser@gmail.com"
Run Code Online (Sandbox Code Playgroud)
如果您已经拥有 SSH 证书,请不要使用它。
2 生成额外的密钥对:
$ ssh-keygen -t rsa -C "seconduser@gmail.com"
Run Code Online (Sandbox Code Playgroud)
3 添加非默认键
$ ssh-add ~/.ssh/id_rsa_seconduser
Enter passphrase for /Users/defaultuser/.ssh/id_rsa_seconduser:
Identity added: /Users/defaultuser/.ssh/id_rsa_defaultuser (/Users/defaultuser/.ssh/id_rsa_defaultuser)
Run Code Online (Sandbox Code Playgroud)
4 设置 SSH 配置文件 ( ~/.ssh/config),以便 SSH 知道哪个密钥用于哪个服务器:
Host github.com
HostName github.com
User git
IdentityFile /Users/XXXUser/.ssh/id_rsa
Host github-client
HostName github.com
User git
IdentityFile /Users/XXXUser/.ssh/id_rsa_XXXSECONDUSER
Run Code Online (Sandbox Code Playgroud)
5 确保在.git/config与 Github 上的第二个用户帐户关联的 Git 项目的文件中,您使用的是正确的主机名,github-client但不是github.com:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@github-client:foobarsomeuser/foobar.git
Run Code Online (Sandbox Code Playgroud)