最近做了些开发环境构建的工作,记录一下以备以后所需,本次构建的本地开发环境为win10,开发服务器为centos8。
centos8安装git及开发仓库相关配置
# git安装
[root@#localhost ~] dnf -y install git
# git管理专用账户创建
[root@#localhost ~] useradd git
# 设置git用户密码
[root@#localhost ~] passwd git
# 创建开发repo
[root@#localhost ~] mkdir /home/git/myproject.git
# 改变开发repo所有者为git账户
[root@#localhost ~] chown -R git:git /home/git/myproject.git
# 修改开发账户devuser所属组为git
[root@#localhost ~] gpasswd -a devuser git
# 进入开发repo,并初始化repo
[root@#localhost ~] cd /home/git/myproject.git
[root@#localhost myproject.git] git init --bare --shared
至此开发用的仓库创建完毕,可以在本地任意路径执行以下命令下载仓库,下载过程中需要使用密码。
git clone devuser@hostname:/home/git/myproject.git
使用ssh来管理git
开发中每次pull,push的时候输入密码什么的相当麻烦,我们可以使用ssh来替换密码认证。针对本地开发所使用的公钥密钥对,我们可能需要2种格式,一种提供给使用命令行的openssh使用,另一种提供给使用putty的TortoiseGit等工具使用。当然我们可以统一使用openssh格式的,这样就需要修改一下TortoiseGit中network中使用的ssh client,将默认的C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe改为C:\Program Files\Git\usr\bin\ssh.exe即可。
配置openssh来支持vscode,命令行等连接
本地安装git后,打开git bash命令行工具,通过ssh-keygen创建格式为rsa的密钥对。
$ ssh-keygen -t rsa -C "devuser@gmail.com"
-C 后是输入此密钥对的备注信息,一路默认将在当前用户文档的 .ssh 下创建私钥文件 id_rsa 和对应的公钥文件 id_rsa.pub。
执行以下命令启动authentication agent。
$ eval "$(ssh-agent)"
执行ssh-add命令添加私钥。
$ ssh-add ~/.ssh/id_rsa
执行ssh-copy-id命令将自动添加公钥到centos服务器上用户devuser的 /home/devuser/.ssh/authorized_keys文件中。
$ ssh-copy-id devuser@hostname
在当前用户文档的 .ssh 手动创建 config 文件,配置连接的相关信息。
Host hostname
HostName hostname
IdentityFile ~/.ssh/id_rsa
User devuser
执行连接命令测试
$ ssh -vT devuser@hostname
如果以上配置无误,连接成功,此时在vscode环境中也可以直接安装git插件进行相关的代码更新及提交作业。
配置TortoiseGit
TortoiseGit所使用的密钥对格式与之前配置的openssh不一致,因此只能通过PuTTygen来生成。如下图所示,打开PuTTygen以后,点击Generate按钮即可开始生成,过程中保持鼠标移动。
生成后的密钥保存到当前用户文档的 .ssh下,命名为id_rsa_putty.ppk,同时保存公钥文件为id_rsa_putty.pub。
手动将公钥数据添加到centos服务器上用户devuser的 /home/devuser/.ssh/authorized_keys文件中后,本地打开TortoiseGit配置,如下图所示Putty Key选中刚创建的私钥文件id_rsa_putty.ppk。
到此为止,即可使用TortoiseGit来免密码获取仓库文件。