【SVN+SSH】搭建SVN并使用SSH进行免密拉取推送代码
- 一、安装svn、openssh-server服务
- 二、开启svn服务,创建测试仓库,并能通过账号密码拉取
- 定义svn仓库文件位置
- 创建仓库:acc_repo
- 配置拉取仓库的账号密码
- 通过账号密码拉取代码
- 三、创建测试仓库,通过svn+ssh拉取代码
- 创建仓库:ssh_repo
- 配置拉取仓库的ssh通道
- 配置ssh代理的centos用户,开启ssh凭证认证
- 尝试拉取代码,以centos为例,不介绍TortoiseSVN使用
一、安装svn、openssh-server服务
yum install -y openssh-server subversion
systemctl start svnserve.service
systemctl enable svnserve.service
二、开启svn服务,创建测试仓库,并能通过账号密码拉取
定义svn仓库文件位置
vim /etc/sysconfig/svnserve
创建仓库:acc_repo
svnadmin create /home/svn/repos/acc_repo
配置拉取仓库的账号密码
cd /home/svn/repos/acc_repo/conf/
cat svnserve.conf
[general]
# force-username-case = none
# 匿名访问的权限 可以是read、write,none,默认为read
anon-access = none
# 使授权用户有写权限
auth-access = write
# 密码数据库的路径
password-db = passwd
# 访问控制文件
authz-db = authz
# 认证命名空间,SVN会在认证提示里显示,并且作为凭证缓存的关键字
realm = /var/svn/account[sasl]
cat authz
[aliases]# 用户组
[groups]
admin = admin#用户组所对应的目录
[/]
@admin = rw#用户组权限
*=r
cat passwd
[users]
admin = 123456
通过账号密码拉取代码
svn co svn://192.168.140.12/acc_repo --username admin
三、创建测试仓库,通过svn+ssh拉取代码
创建仓库:ssh_repo
svnadmin create /home/svn/repos/ssh_repo
配置拉取仓库的ssh通道
cat svnserve.conf
[general]
# 匿名访问的权限 可以是read、write,none,默认为read
anon-access = none
# 使授权用户有写权限
auth-access = write
# 访问控制文件
authz-db = authz[sasl]
cat authz(注意:此处设置的用户将用作ssh通道中指定svn的用户)
[aliases]# 用户组
[groups]#用户组所对应的目录
[test:/]
svnuser = rw
配置ssh代理的centos用户,开启ssh凭证认证
创建新的centos用户:svn_ssh
useradd svn_ssh
passwd svn_ssh
生成一个ssh密钥对,用作ssh登录凭证
ssh-keygen -t rsa -b 1024 -f svnuser.key
将生产的公钥放置svn_ssh用户下的authorized_keys(/etc/ssh/sshd_config中的默认公钥文件就是authorized_keys)
mkdir -p /home/svn_ssh/.ssh
设置 authorized_keys 格式如下
command="svnserve -t -r <ReposRootPath> --tunnel-user=<author>",no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding ssh-rsa <PublicKey> <Comment>
- <ReposRootPath> 为仓库根路径
- <author> 为之前设置的svn用户
- <PublicKey> ssh生成的公钥
cat /home/svn_ssh/.ssh/authorized_keys
command="/usr/bin/svnserve -t -r /home/svn/repos --tunnel-user=svnuser",no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCsvesIsA/gdEn6tJTslgs034kLdRMqgPFQMHWAui3fJ9kCbY4ZJaHSmCF0aBOHdvQtRCseMnPzt7zxnPrmTWlMWBWtJTu7rYxvSC5hyewaExv9k+u1JKIkCK2lgSPhvP+V3qQbxSKA421vaGU98lrG2jsPGYJJxKn82C34/4Fx0w== root@dsmp-2.3.1.novalocal
尝试拉取代码,以centos为例,不介绍TortoiseSVN使用
生成用户.subversion目录
svn co
设置svn ssh拉取代码制定的key文件(需要将之前生成的私钥拷贝过来)
vim ~/.subversion/config
在[tunnels] 下面添加配置
ssh = /usr/bin/ssh -l svn -i /root/.subversion/svnuser.key
拉取代码
svn co svn+ssh://192.168.140.12/ssh_repo