我试图在Debian服务器上设置一个Git服务器,但似乎无法添加可以成功访问它的用户。
在完成gitosis-init之后,克隆gitosis-admin存储库并将本地机器的公钥添加到/ keydir中,然后编辑gitosis.conf文件。 就像许多教程告诉我的一样。
我已经确认,gitosis-admin存储库已经被正确地更新,将其克隆到另一个位置,并进行了更新。
gitosis.conf的
[gitosis] [group gitosis-admin] writable = gitosis-admin members = saifis@debian, saifis@local
现在,我尝试将gitosis-admin克隆到本地机器上的一个文件,并给出了一个
Permission denied (publickey).
错误。
ssh -v gitosis @ DebianAddress给了我
OpenSSH_5.2p1, OpenSSL 0.9.8l 5 Nov 2009 debug1: Reading configuration data /etc/ssh_config debug1: Connecting to 192.168.xxx.xxx [192.168.xxx.xxx] port 22. debug1: Connection established. debug1: identity file /Users/saifis/.ssh/identity type -1 debug1: identity file /Users/saifis/.ssh/id_rsa type 1 debug1: identity file /Users/saifis/.ssh/id_dsa type -1 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5 debug1: match: OpenSSH_5.1p1 Debian-5 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.2 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5 none debug1: kex: client->server aes128-ctr hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Host '192.168.xxx.xxx' is known and matches the RSA host key. debug1: Found key in /Users/saifis/.ssh/known_hosts:1 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey ----------------- debug1: Trying private key: /Users/saifis/.ssh/identity debug1: Trying private key: /Users/saifis/.ssh/id_dsa debug1: No more authentication methods to try. Permission denied (publickey).
我不认为它是一个关键相关的问题,因为相同的公共密钥用于通过SSHlogin到同一台服务器,并且工作正常。
如果需要更多信息,请填写。
—添加—-关于〜/ gitosis / .ssh / authorized_keys。 据我的理解,由于授权的git用户通过gitosis帐户通过SSH访问,将公钥添加到authorized_keys听起来像是正确的答案,但是在文件的顶部,它有
### autogenerated by gitosis, DO NOT EDIT
并不是说我应该盲目地遵循它所说的话,但是将公钥添加到authorized_keys中会使所有添加的用户都可以通过ssh访问整个服务器,而且我不想将这么多的控制权交给存储库用户。
我以为gitosis照顾了这一点,只有通过git方法访问时才允许访问,而不是直接的ssh访问,或者他们被添加到authorized_keys吗?
在你推送任何东西之前,唯一对gitosis帐户有任何权限的密钥就是你传给gitosis-init的那个。 其他键可以访问您的常规用户帐户是无关紧要的。 比较~gitosis/.ssh/authorized_keys和ssh-add -L 。
Gitosis的工作原理是这样的:在每一次推送中,一个更新后的钩子运行,gitosis为自己的账户重新生成authorized_keys。 如果它没有拿起你的钥匙,那很可能不是gitosis所期望的格式。 由于挂钩是在更新后,更新将被接受,即使它是无效的(gitosis可以通过更新和更新后钩更严格)。 做一个微不足道的改变,并从具有初始密钥的主机再次推送,查看gitosis错误的消息。 手动添encryption钥到authorized_keys涉及复制正确的行,replace密钥types,密钥数据和用户名。