我刚刚安装了Archbang,并试图克隆我的一个Git项目,这需要SSH密钥。
过去,我在Ubuntu和RedHat机箱上都遵循过Github的成功指南,但由于某些原因,我在新安装的拱门上并不适合它。
我已经使用以下命令成功地生成了我的SSH公钥/私钥对:
ssh-keygen -t rsa -b 4096 -C "email@address"但是,当我继续启动SSH代理并添加我的公钥时,我会遇到一些问题。
[user@arch ~]$ eval "$(ssh-agent -s)"
bind: Permission denied
unix_listener: cannot bind to path: /tmp/ssh-ZqYqSabxjZeA/agent.9328但是,如果我将它作为root运行,这是成功的:
[user@arch ~]$ eval "$(sudo ssh-agent -s)"
[sudo] password for user:
Agent pid 9146但我很确定我不想把SSH作为根。
继续前进时,当我尝试使用ssh-add时,我也会得到权限错误,但这次是作为标准用户和root用户:
[user@arch ~]$ ssh-add .ssh/id_rsa.pub
Could not open a connection to your authentication agent.
[user@arch ~]$ sudo ssh-add .ssh/id_rsa.pub
Could not open a connection to your authentication agent.所以现在我真的很困惑。
我尝试过将bash过程打开为root来完成这些工作,但是1)我不喜欢这个想法,2)它仍然不起作用,但这次是出于不同的原因:
[user@arch ~]$ sudo ssh-agent -s
[root@arch ~]# ssh-add .ssh/id_rsa.pub
Enter passphrase for .ssh/id_rsa.pub:
Bad passphrase, try again for .ssh/id_rsa.pub:由于某些原因,在根shell中执行此操作会导致我的SSH密钥密码短语被拒绝;我多次尝试使用最简单的密码短语,所以我肯定我已经给了它正确的密码。
我不知所措。我真的不喜欢所有这些sudo内容,我也不知道为什么它看起来是必要的;我检查了.ssh目录及其文件的权限,甚至删除了整个目录并重新生成了键,以确保它们不是用错误的权限生成的。
有人能帮帮我吗?我做错了什么?
编辑:作为对建议答案的回应,我再次尝试使用主目录中的套接字位置。以下是研究结果:
[user@arch ~]$ mkdir -m 700 ~/.ssh
[user@arch ~]$ ssh-keygen -t rsa -b 4096 -C "email@address"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
...
[user@arch ~]$ chmod 644 .ssh/id_rsa.pub && chmod 600 .ssh/id_rsa
[user@arch ~]$ eval "$(ssh-agent -sa .ssh-agent.$$)"
Agent pid 1881
[user@arch ~]$ ssh-add .ssh/id_rsa.pub
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '.ssh/id_rsa.pub' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.在这一点上,我不明白为什么这些权限是不可接受的,以及为什么它认为我的公钥是私钥。但我很幽默,将权限更改为600,并试图再次添加它。
[user@arch ~]$ chmod 600 .ssh/id_rsa.pub
[user@arch ~]$ ssh-add .ssh/id_rsa.pub
Enter passphrase for .ssh/id_rsa.pub:
Bad passphrase, try again for .ssh/id_rsa.pub:现在,我已经到了一个与以前类似的位置:它不像我为SSH密钥创建的密码。到底怎么回事?!这真是令人费解。
发布于 2014-11-28 08:10:38
您正在运行的用户似乎没有写入默认ssh代理套接字位置的权限。
这应该可以解决您的问题:
ssh-agent -a ~/.ssh-agent.$$这将使用-a选项指定套接字位置,即主目录中的~/.ssh-agent.$$。
权限问题可能是由简单的UNIX权限(即,该用户不能写的/tmp )或SELinux或其他东西引起的。
发布于 2014-11-28 21:19:26
经过几个小时的努力,我终于找到了问题的根源。
umask 755放在了.bashrc中;我的目的是将文件权限设置为755,在这种情况下,umask应该被设置为022或002 (我使用了后者)。这个不正确的umask被证明是所有权限错误的根(hehe):所有不同的SSH命令生成的文件和目录都是使用不正确的权限创建的。ssh-add它并为它输入密码会导致所有那些“坏密码”错误。谢谢大家的帮助!你让我找到了对我有用的解决方案。在纠正了这些错误之后,我成功地启动了没有根访问的ssh-agent,并添加了我的私有SSH密钥。
https://stackoverflow.com/questions/27183255
复制相似问题