我按照这个教程在EC2实例上设置了一个git仓库。 http://git-scm.com/book/ch4-4.html 。 基本上,我添加一个新的git用户,并将我的公钥包含在authorized_keys中。 build立git用户之后,我只是通过git init --bare初始化一个新的回购。
但是,我注意到,我可以轻松地克隆它,而不需要我的私钥。 有没有办法强制它只能通过SSH获得,所以authorized_keys跟着? 我猜它是使用默认的端口9418,似乎不支持身份validation的git。
UPDATE
好吧,我已经尝试了一个没有任何键的新鲜盒子,我无法login或克隆我的回购。 我意识到ssh-add -D由于某种原因不适合我。 我正在select最有帮助的答案,谢谢。
端口9814是git-daemon运行的地方(例如clone, git clone git://git.example.com/repo )。 这是为了一个内部的git仓库。 阅读文档以获取更多详细信息。
你有两个其他选项来设置远程git服务器:
git clone ssh://git.example.com/git/repo git clone https://git.example.com/git/repo SSH更容易设置。 您只需确保所有贡献者都可以访问SSH帐户。 这通常通过SSH密钥完成—每个开发人员将他们的公钥添加到git SSH帐户。
只要记住:
ssh , git , http或https )。 ssh端口22 https端口443 git和端口80为http 你似乎是在git-daemon负责的假设之下。 你确认git-daemon实际上是在系统上运行吗? 检查进程列表以及打开的端口列表:
$ ps auxwww | grep git-daemon $ sudo netstat -ptuna | grep 9814
如果git-daemon没有运行,并且没有任何监听端口9814,那么可能还有其他的错误 – 也许你添加的新git用户没有设置密码,或者SSHconfiguration正在使用Kerberos,你有一个现有的有效服务票据。
HTTP和SSH只有git支持的大约六种协议中的两种。 我相信,git只使用SSHforms的用户@主机forms的URL,所以我很确定这是一个与您的git用户身份validation问题。
克隆回购时,请注意系统上的validation日志(通常为/var/log/auth.log或/ var / log / secure)。 如果您在克隆操作期间看到git用户的SSHlogin,那么几乎可以肯定使用SSH而不是git-daemon。