之前自己是按照 Git 服務器搭建這篇博客來安裝git服務器的,一步步順序下來,但git clone的時候,每次都要求輸入密碼。說好的SSH免密登錄呢。前后搞了一天多才搞定,現在記錄下踩過的坑。
坑1:
那篇文章的原文:
收集所有需要登錄的用戶的公鑰,公鑰位於id_rsa.pub文件中,把我們的公鑰導入到/home/git/.ssh/authorized_keys文件里,一行一個。 如果沒有該文件創建它: $ cd /home/git/ $ mkdir .ssh $ chmod 700 .ssh $ touch .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys
這邊創建的文件夾,應該授權給git用戶,所以應該再加一句:
$ chown -R git:git .ssh
坑2:
那篇文章沒有提修改/etc/ssh/sshd_config下的配置文件。
在Git服務器上首先需要將/etc/ssh/sshd_config中將RSA認證打開,即: 1.RSAAuthentication yes 2.PubkeyAuthentication yes 3.AuthorizedKeysFile .ssh/authorized_keys
修改配置之后,需要重啟sshd
systemctl restart sshd.service
可以通過這個命令去測試SSH是否可連接:
ssh -T git@192.168.1.85
然后在服務器,可以通過這個命令查看ssh狀態
systemctl status sshd.service
坑3:
ssh可以連接了,但git clone的時候,報
fatal: protocol error: bad line length character: This
找到/etc/passwd,原文里面是說:
這樣我們的 Git 服務器安裝就完成了,接下來我們可以禁用 git 用戶通過shell登錄,可以通過編輯/etc/passwd文件完成。找到類似下面的一行: git:x:503:503::/home/git:/bin/bash 改為: git:x:503:503::/home/git:/sbin/nologin
但就是這個nologin讓我們報錯了,應該改成:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
附Git創建倉庫命令:
git init --bare demo.git
--將創建的庫授權給git用戶
/home/gitrepo/demo.git/ chown -R git:git demo.git