1. 使用ssh连接上自己的云服务器,然后创建一个裸仓库
git init --bare wen.git
2. 创建用户
useradd wen
echo 123456 | passwd --stdin wen
chown -R wen:wen/usr/local/nginx/html/gaopenggui/git/wen.git
3. 到本地客户端clone
git clone wen@47.93.47.24:/usr/local/nginx/html/gaopenggui/git/wen.git
到这一步基本就可以了,但是不安全,因为weixin这个用户可以直接使用ssh登录
4. 在本地客户端使用ssh生成公钥和私钥
ssh-keygen -t rsa -C "1411942704@qq.com"
5. 到你本机clone的目录下去设置下git的全局账号
git config --global user.name 'sss'
git config --global user.email "1411942704@qq.com"
6. 到服务器上修改sshd的配置文件,开启rsa认证
vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
7. 到服务器weixin这个账号的家目录下创建.ssh的文件夹,在其中创建authorized_keys
cd /home/wen
mkdir .ssh
cd .ssh
touch authorized_keys
8. 给权限
chown -R wen:wen .ssh
9. 复制客户端.ssh/id_rsa.pub中的内容到authorized_keys这个文件中
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuXuEE6gA5zJquOFDY4WiCEWvApU4b57K+V6KSATa2SYc/rcGd0O1z37TKWsDrVVdvD4q2TLj4pws/s8qcAccOQAfS/Ndn0Wj6O2Fp4t2hwdBnsQOOne713h+I/cYKqXSGnKnhCcEdsPIgna6gJmFBsG3bqgSrJNH/OMfCFQoWhY0LhYUsd0ntd++1ZAsW5tcOZrn3zYx6Gsv46yCRKH3A6jm8yRGJg23sbw2MgWk6YLMTeq+yBlniR8lUmQDFx9s6Ex7ZV45ah9JPhJFgy3vZtFVVt2nCOu/g+dvC6zmSf74vkdGO30fUXtbGBEMet50Nr0Y5yUFSdom7CQvAqZUKw== 476837464@qq.com
10. 修改/etc/passwd这个文件中weixin用户的登录脚本
/bin/git-shell
peng:x:1001:1001::/home/peng:/bin/git-shell
11.在/var/www/下面创建weixin目录
git clone wen@127.0.0.1:/usr/local/nginx/html/gaopenggui/git/wen.git
12. 测试即可实现无密码登录而且weixin用户不能直接使用ssh进行远程连接,但可以推送git内容
13.测试git push 如果失败,在服务器端的这个平级wen.git
sudo chown -R wen:wen wen.git
钩子的设置
// hook如何让git自动将内容checkout到对应的目录??这一步很重要
// hooks 钩子
// 钩子的原理
// post-update:提交更新之后要干什么事情 shell脚本
// 实现自动化代码不熟的步骤:
// 1.进入对应的git仓库
cd wen.git/hooks
// 2.修改文件名
mv post-update.sample post-update
// 3.编辑post-update中内容
unset GIT_INDEX_FILE
git --work-tree=/usr/local/nginx/html/gaopenggui/git/wen --git-dir=/usr/local/nginx/html/gaopenggui/git/wen.git checkout -f
// 解释:
// --work-tree:工作空间呢,实际放饭吗的空间,在/usr/local/nginx/html/gaopenggui/git/wen
// --git-dir : git仓库空间,在/usr/local/nginx/html/gaopenggui/git/wen.git 一定是以.git结尾的文件夹
//钩子如果用不了,查看权限,只能是用户权限,不能是root用户