(SVN+SSH)搭建SVN并使用SSH进行免密拉取推送代码

【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

(SVN+SSH)搭建SVN并使用SSH进行免密拉取推送代码_第1张图片

创建仓库: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  --tunnel-user=",no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding ssh-rsa  
  • 为仓库根路径
  • 为之前设置的svn用户
  • 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== [email protected]

尝试拉取代码,以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

你可能感兴趣的:(Linux,svn,ssh,服务器)