前段时间一时兴起,买了一个NAS,具体型号是QNAP TS-269L。一方面用作硬盘存储数据,另一方面为了方便就在上面搭了一个Git代码服务器。下面详述一下这个Git Server是如何搭建起来的。
- 安装Optware IPKG。这个在QNAP官方的App Center里有提供,直接去安装即可。
- 安装Git。这里通过ipkg安装的Git比较新。官方App Center里提供的git版本比较老。通过SSH登陆admin账号后运行如下命令。
ipkg update
ipkg install git - 初始化git服务器端仓库。你的git仓库务必存放在非系统自带的目录下,否则系统重启之后数据会被抹掉(我尝试了是这样的)。假定服务器端git仓库目录为:/opt/repos,项目目录为hets.git。通过SSH登陆admin账号后运行如下命令。
cd /opt/repos
git init –bare hets.git - 为NAS添加名称为git的用户和用户群,用于所有的git仓库访问。这里最好通过NAS自带的WEB界面创建用户和用户群,且git用户无需其他目录的权限。创建之后,通过WEB界面使用git用户进行登陆,这样NAS系统会自动设置好git用户的默认目录(这个目录是/share/homes/git)。
- 更改git仓库目录的所有者为git用户。运行如下命令。
chown -R git:git /opt/repos - 由于QNAP自带的SSH server不允许除admin账号以外的其他账号使用SSH的方式连接系统,所以我们需要手动安装OpenSSH。通过admin账户登陆Web管理页面,修改系统自带的SSH端口号22为22000或其他不冲突的值。这样可以让OpenSSH正常使用22端口来运行。
- 安装OpenSSH并启动服务。同样需要通过系统原有的SSH server登陆admin账号(通过参数 –P22000 来指定为修改后的端口号)。
ipkg install openssh openssh-sftp-server
/opt/etc/init.d/S40sshd start - 再客户端机器上通过git GUI工具生产SSH密钥,并将公钥(id_rsa.pub)添加到服务器端的认证文件里。在客户端机器的git bash中运行如下命令。
#将公钥复制到NAS
scp /c/Users/baib/.ssh/id_rsa.pub git@www.xxxxxx.net:/share/homes/git/id_rsa.pub
#通过SSH登陆admin账户后运行如下命令。
su git
cd /share/homes/git
mkdir .ssh
cat ./id_rsa.pub >> /home/git/.ssh/authorized_keys
rm ./id_rsa.pub - 设置认证文件及其所在各级目录的权限。由于SSH要求密钥文件及其目录的读写权限只能开放给当前用户,否则无法通过密钥进行认证,这样每次登陆时还是需要输入密码。
chown -R git:git /share/homes/git
chmod 700 /share/homes/git
chmod 700 /share/homes/git/.ssh
chmod 600 /share/homes/git/.ssh/authorized_keys - 这时,git客户端应该已经可以访问服务器端的仓库了。在客户端机器的git bash中运行如下命令。
git clone git@www.xxxxxx.net:/opt/repos/hets.git - 为了安全起见,禁止通过SSH来登陆git账户。修改/etc/passwd文件。找到行git:x:502:502:Linux User,,,:/home/git:/bin/sh修改为git:x:502:502:Linux User,,,:/home/git:/opt/bin/git-shell。如果不知道git-shell的具体路径,可以使用which git-shell命令来获得。
- 使用vim时如果报这个错误“E437: terminal capability "cm" required”,则先执行以下如下命令再使用vim即可。
export TERM=xterm
原文链接:https://blog.csdn.net/t_larry/article/details/45150021
© 版权声明
声明📢本站内容均来自互联网,归原创作者所有,如有侵权必删除。
本站文章皆由CC-4.0协议发布,如无来源则为原创,转载请注明出处。
THE END