我是真滴无聊,废话不多说。。
一、 创建一个用户git并设置密码 , 这个账户是用来管理git的.(这里就不创建新组了)
$ adduser git # useradd git
$ passwd git
二、首先在服务器上找个地方创建一个git仓库, 注意,服务器上的是裸仓库, 没有工作区的那种。而且服务器最好以 “.git” 结尾。
比如 /srv/gitserver.git
$ sudo git init –bare gitserver.git
这里直接更改该库的用户.
还有一点: 只为git用户的ssh连接启用git-shell (表示不给这个用户的进入界面的权限,只给访问权限,你登录该用户后无法进入系统。我是这样理解的,如果有误还请大家指正。)
三、开启RSA认证
进入/etc/ssh 目录,编辑sshd_config,打开以下三个配置的注释。
<1>开启RSA认证
<2>开启公钥方式认证
<3>默认认证目录
重启sshd服务:
四、SSH 传输
(1)先在服务器上
创建目录: /home/git/.ssh/authorized_keys(在git用户的目录下,创建之前指定的默认目录)
同时设置权限, 防止后面编辑出问题.
(2)导入客户端公钥
生成公钥步骤:
1. 生成sshkey
2.查看公钥
3.将客户端公钥导入服务器
$ ssh git@server 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
4.测试
表示成功.然后可以添加点文件提交试试:
遇到的问题及处理办法:
1.编辑 ~/.ssh/authorized_keys 时无法保存退出, 提示 readonly(加 ! 强制退出 ):
是权限问题, 需要设置 .ssh 文件的权限为700, authorized_keys文件为600.
2.推送不成功.是权限问题:
解决
(1)查看权限:
(2)发现都是root的, git用户权限不够, 无法访问,修改owner为git用户:
附带一些vim的基本命令
vim:
i: 进入插入模式
ESC: 退出插入模式
:wq 保存修改并退出
:q! 强制退出, 放弃修改
有问题与见解欢迎提出来共同讨论。
end。