问题及解决方案
今天在尝试通过 git
部署 Hexo 的时候, 发现远程服务器新建了 git
用户后无法通过设置 authorized_keys
来免密登录. 通过一番搜索发现是因为 git
用户下 .ssh
目录权限的问题.
其实是服务器 public key
部署的问题
1 2 3
| su git chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
|
简要记录一下 git
部署 Hexo
方案的过程
服务器用户以及目录权限部署
- 安装 git
1 2
| yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel yum install -y git
|
- 创建用户
- 创建网站目录以及
git
仓库
1 2 3 4 5
| mkdir -p /var/www/blog mkdir -p /var/repos cd /var/repos git init --bare blog.git vi blog.git/hooks/post-receive
|
1 2 3
|
git --work-tree=/var/www/blog --git-dir=/var/repos/blog.git checkout -f
|
1 2 3
| chmod +x blog.git/hooks/post-receive chown -R git:git /var/repos/blog.git chown -R git:git /var/www/blog
|
部署 public key
(本地电脑操作)
1 2
| ssh-copy-id -i ~/.ssh/id_rsa.pub git@server_ip -p server_ssh_port ssh -p server_port git@server_ip
|
注: 如果此处提示输入密码, 可能是权限问题, 参考文章开头 [问题及解决方案], 否则请检查以上步骤
回到服务器 禁用 git
用户登录 shell
修改 /etc/passwd
中的权限
1
| git:x:1000:1000::/home/git:/usr/bin/git-shell
|
更新一个坑(远程 SSH 端口非 22 时, Hexo 的 git 部署)
如果 ssh 的端口不是 22, 则需要把 _config.yml
中 deploy.repo
设置为 ssh://git@server_ip:server_ssh_port/var/repos/blog.git