搭建相关命令
#添加一个用于访问仓库用户
sudo adduser git
#解除该用户锁定或passwd git设置一个密码
#(linux创建用户默认无密码,被系统锁定,但是su git可以通过该用户操作,然后我当初就只能root用户ssh连接 。。。。)
passwd -f -u git
#创建一个git仓库,赋予git用户
sudo git init --bare /var/project.git
sudo chown -R git:git /var/project.git
#切换用户,修改配置
su git
#非常严格的权限要求(linux的安全机制)
cd ~
mkdir -m 0700 .ssh
cd .ssh
touch authorized_keys
chmod 0600 authorized_keys
#添加客户端公钥到文件(见附录1)
cat /tmp/id_rsa.pub >> authorized_keys
#禁止git用户登录
su root
usermod -s /usr/bin/git-shell git
#修改ssh配置文件
打开/etc/ssh/sshd_config文件,将如下的配置打开:
#centos6.8环境表示没有下面这个配置
RSAAuthentication yes
#运行ssh通过密钥连接
PubkeyAuthentication yes
#信任公钥存放文件(主目录下)
AuthorizedKeysFile .ssh/authorized_keys
#重启sshd服务
service sshd restart
#客户端 克隆
git clone git@192.168.2.168:/var/project.git
附录
附录1:
ssh 密钥生成方式,当前用户目录生成密钥
ssh-keygen -t rsa -f ~/.ssh/id_rsa -N “”
附录2:
个人理解:
/etc/ssh目录下的ssh.conf本机作为客户端的配置,ex:公钥默认目录IdentityFile ~/.ssh/id_rsa
/etc/ssh目录下的sshd.conf本机作为服务器端的配置,ex:公钥默认目录IdentityFile ~/.ssh/id_rsa
附录3:
windows公钥存放位置
c:\Users\用户名.ssh\
性格如此
其实建议使用gitlab