本文以centos为例,其他linux请自行参照对应方式。
1. 服务端安装git
yum install git
2. 服务端添加无shell登录权限的用户,将username替换为要添加的用户
useradd -s /sbin/nologin username
3. 初始化仓库
git init --bare sample.git
4. 在客户端,也就是gitbash(windows用户)生成密钥和公钥,邮箱地址改为你自己的,当然后面的两个 -t 和 -C 参数可以不要。
ssh-keygen -t rsa -C "youremail@example.com"
然后到用户目录(默认)找到.ssh文件夹下的.pub扩展名的文件,编辑器打开复制
5. 服务端打开git权限,并设置保存公钥的目录
进入ssh的设置路径
vi /etc/ssh/sshd_config
将如下上注释#符号去掉保存并退出
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
从上面的代码中可以看到保存authorized key的路径在 /home/git/.ssh/authorized_keys 下
5. 将公钥文件添加到服务端的git的配置文件中
根据上一步获得的key路径,我们进入/home/git,发现不存在.ssh文件夹,新建文件夹 .ssh,并进入该文件夹(其实默认ls命令是不显示点开头文件夹的),然后新建文件authorized_keys,将第4步中获取的公钥保存到该文件并退出。然后重启ssh
cd /home/git/
mkdir .ssh
cd .ssh
vi authorized_keys
#粘贴第四步中复制的龚玥
#保存退出
service sshd restart #重启sshd
6. 至此,即可在客户端通过git clone免密码提交或更新了
git clone git@serveripOrserverName:/path/to/rep.git