踩坑:
添加的是root用户的公钥,执行拉代码的是www用户。
root登录服务器,创建公私钥。然后把公钥添加到gitee并启用。gitee创建仓库,clone到本地修改代码后,提交到仓库。调用WebHooks往服务器推送数据,服务器的钩子文件执行git pull
拉取代码一直提示无权限。
gitlab.php
钩子文件代码:
1 |
|
提示:
"error: cannot open .git/FETCH_HEAD: Permission denied"
给该文件写权限
把
git pull
改成sodu git pull
提示如下:
1 | "/www/wwwroot/test |
用户权限有问题。当前执行拉代码的用户是www,而shell登录的是root,用root手动执行
git pull
是没问题,就是钩子文件执行没权限。提示:"Host key verification failed.fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists."
那就从root切换到www用户:
su - www
,之前服务器做了安全限制,www没有登录shell的权限,把www:x:1000:1000::/home/www:/sbin/nologin
改成/bin/bash
再执行切换用户。切换后,重新生成公钥,添加到gitee启用。
1 | #www用户无登录shell权限,此帐户当前不可用。 |
本地修改代码后执行
git push origin master
就会看到触发的钩子在服务器执行git pull
成功了。
1 | www #打印的当前用户 |
可能会用到的点:
服务器生成公钥:ssh-keygen -t id_rsa -C "xxx@xx.com"
或ssh-keygen -C "xxx@xx.com"
服务器验证公钥:ssh -T git@gitee.com
成功会提示如下:
Hi Anonymous! You've successfully authenticated, but GITEE.COM does not provide shell access.
git
使用ssh
方式git@gitee.com:xxx/xxx.git
操作报错
解决:把当前操作git的电脑或服务器公钥添加到代码仓库所在服务器,部署并启用!
1 | C:\Users\DragonersLi\Desktop>git clone git@gitee.com:gitlabstack/xxx.git |
本人声明: 此文只作为自己日后工作学习中遇到类似问题方便快速回忆解决问题的笔记,仅供参考!
版权声明: 本文首发于 すせなの筆記 转载无需联系本人,但要注明来源本站!