为什么Git忽略〜/ .ssh/id_rsa,想要〜/ .ssh/id_dsa或〜/ .ssh/id_ecdsa?

gre*_*uan 5 git ssh

这是我收到的错误:

no such identity: /home/eduan/.ssh/id_dsa: No such file or directory
no such identity: /home/eduan/.ssh/id_ecdsa: No such file or directory
Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)

这就是我试图推动时发生的事情,或者在我这样做的时候ssh -T git@github.com.

我已经正确生成了id_rsa和id_rsa.pub文件.

我怎么能解决这个问题呢?我正在使用Arch Linux和E17 BTW.

编辑:
@kortix将为此做以下工作?:

Host github.com
    IdentityFile ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

它似乎对我不起作用......当我用Git推动时,我得到以下内容:

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)

我确保存在repo,并且还使用了更新了远程URL git remote set-url origin git@github.com:Greduan/dotfiles.git.

我还将SSH密钥添加到GitHub中接受的SSH密钥列表中.我还该怎么办?

kos*_*tix 7

您生成时,SSH客户端会告诉您id_dsa(注意"d" - 它代表DSA)id_rsa(注意"r"代表RSA).

您应该生成DSA密钥或告诉SSH使用哪个"身份"(私钥).这可以使用远程文件中IdentityFile自定义Host条目下的指令来完成(参见手册页).~/.ssh/configgithubssh_config(5)

更新(2013-04-29,为下一位读者提供更清晰的信息).问题的essense是,OP对他的错误的所有者(根)~/.ssh/id_rsa键,这样OpenSSH客户端第一次试图读取该键,失败,再接着试图读取~/.ssh/id_dsa~/.ssh/id_ecdsa反过来,这也失败了-这一次因为他们根本就不存在 没有更多密钥用于pubkey身份验证并且没有可用的身份验证机制,SSH客户端失败.那些"没有这种身份......"的消息实际上是警告.