Centos6 下为git配置SSH验证

server
1.首先安装git

1
yum install git

2.新建一个linux用户,起名为git

1
adduser git

3.在git用户目录中新建目录 .ssh

1
2
cd /home/git/
mkdir .ssh

4.在/home/git/.ssh/目录中新建authorized_keys文件,并将客户端提供的公钥(id_rsa.pub)黏贴到该文件中
touch authorized_keys 或 vi authorized_keys

5.在项目目录创建一个git裸仓库,假如当前项目目录为/home/git/project.git
git init –bare project.git

6.将项目目录和git用户目录下的.ssh目录的所有者和所属组都设置成git

1
2
chown -R git.git project.git
chown -R git.git /home/git/.ssh/

7.为了安全考虑,禁用git用户的shell登录(我这里改了就必须输入密码才行使用,不知道为什么)

1
2
3
vi /etc/passwd
注释 ##git:x:500:500::/home/git:/bin/bash
改为 git:x:500:500:git version control:/home/git:/usr/bin/git-shell

git服务器打开RSA认证

1
2
3
4
5
vi /etc/ssh/sshd_config
下面3个打开
1.RSAAuthentication yes
2.PubkeyAuthentication yes
3.AuthorizedKeysFile .ssh/authorized_keys

client
1.生成公钥,并复制到剪切板

1
2
ssh-keygen -t rsa
pbcopy < ~/.ssh/id_rsa.pub

此步骤要将公钥发给git服务器管理员

2.在本地新建git仓库

1
git init

3.新建一个文件并推送到服务器

1
2
3
4
5
touch readme.txt
git add readme.txt
git commit -m "readme"
git remote add origin git@xxx.xxx.xxx.xxx:/home/git/project.git
git push origin master

注:如果提示需要密码,请检测公钥是否配置成功或RSA是否开启。
转:
https://blog.phpgao.com/build-git-server.html


转得第二个, 用了里面的权限设置
—- 配置SSH Config
$cd /etc/ssh
$vim sshd_config
// 打开以下三个选项
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

—- 生成SSH Key
$ssh-keygen -t rsa -C email@example.com

一路回车,生成文件 id_rsa, id_rsa.pub

—- 创建SSH ras配置文件

// 添加git用户
$sudo adduser git

// 切换到git
$su git

// 进入git主目录,如/home/git
$cd

// 添加.ssh目录、修改权限
// 注:确认.ssh文件夹建立在git的主目录下,如果找不到文件或git权限不够会无法认证。
$mkdir .ssh && chmod 700 .ssh

// 添加授权文件
$touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

// 把公钥内容复制到授权文件中
$cat id_rsa.pub > .ssh/authorized_keys

—- 服务端创建git bare
$cd /home/git
$mkdir test.git
$cd test.git
$git init –bare

—- 客户端git连接
把私钥id_rsa复制到本地客户端,路径如下:
windows => C:\Users\.ssh\id_rsa

// 启动git shell并进入某个git项目下
// 添加远程url,使用这个方法主要是可能ssh带有非22的默认端口号
git remote set-url origin ssh://git@server:port/home/git/demo.git

// 开始使用git

—- 附:在创建git用户后,为了安全,最好限制git用户不能使用shell

$cat /etc/shells // 看是否已经配置了git-shell,如果没有再添加上去
$which git-shell // 查找git-shell,一般为 /usr/local/bin/git-shell
$vim /etc/shells // 把git-shell路径添加到shells中
$chsh git // 为git用户指定使用的git-shell路径。
$/usr/local/bin/git-shell // 输入git-shell路径

Author

陈昭

Posted on

2016-11-08

Updated on

2021-12-27

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

Kommentare

You forgot to set the shortname for Disqus. Please set it in _config.yml.