首先确保安装服务器 Git
git --version
// git version 1.8.3.1
建仓库
git init --bare /home/git/my_project.git
// 赋予git用户、用户组
chown -R git:git my_project.git
生成公私钥
windows 下安装的 Git Bash
ssh-keygen -t rsa -C "我的邮箱@sina.com"
下一步下一步下一步
生成两个文件 一个公钥一个私钥
打开puttygen ,load按钮加载私钥, save private key 保存私钥为 .ppk 文件
查看 .shh 公钥配置
切换到用户命令:
su git
查看 .ssh 配置命令: (~代表你的/home/用户明目录,假设你的用户名是x,那么~/就是/home/x/)
cd ~/.ssh
如果没有就在 home/git 下新建:
cd /home/git/
mkdir .ssh #新建文件夹
chmod 700 .ssh
touch .ssh/authorized_keys #新建文件
chmod 600 .ssh/authorized_keys
vim .ssh/authorized_keys #填写公钥保存
cat .ssh/authorized_keys
开启sshd_config配置(重点)
StrictModes no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
否则会出现 no supported authentication methods available ( server send: publickey,gssapi-keyex,gssapi-with-mic)
重启 SSH
service sshd restart
关闭 git 用户 shell 权限
禁止Shell登录
因为搭建git服务器后通常会建立一个git账户,其它人共用这个账户来克隆或推送数据到git仓库中,通常也只需要这个功能,但是如果不加限制,那么其它人可以通过这个git账户登录到主机,那么这样是不安全的,所以需要加以限制,即令git用户不允许登录shell,可以编辑/etc/passwd文件,找到类似下面的一行:
git:x:502:502::/home/git:/bin/bash
改为
git:x:502:502::/home/git:/usr/local/git/bin/git-shell
【注】(个人用的话可忽略)
这样git这个账户就只能用来克隆或者推送数据到git仓库中了,而不能用它来登录到主机。
现在 git 用户只能用 SSH 连接来推送和获取 Git 仓库,而不能直接使用主机 shell,因为我们为git用户指定的git-shell每次一登录就自动退出,尝试普通 SSH 登录的话,会看到下面这样的拒绝信息:
[root@localhost ~]# ssh git@192.168.25.133
git@192.168.25.133's password:
Last login: Wed Jun 13 21:52:02 2018
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to 192.168.25.133 closed.
参考链接:
https://www.jianshu.com/p/e4946edce9a4
https://www.ycmbcd.com/blog/html/15906398441556.html