Linux构建Git代码仓库与RSA认证连接

许多 Git 服务器都使用 SSH 公钥进行认证。 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。 这个过程在所有操作系统上都是相似的。 首先,你需要确认自己是否已经拥有密钥。 默认情况下,用户的 SSH 密钥存储在其 ~/.ssh 目录下。

Git官方文档 链接:https://git-scm.com/book/en/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key

上篇文章我们讲到在Linux上构建Git代码仓库,这次基于上篇文章,做SSH认证连接服务器,通过这种方式,之后写代码就能自由拉取代码而不需要通过帐号认证。

ssh配置

  1. 首先我们打开SSHD服务配置,打开指定认证用配置

    $ vim /etc/ssh/sshd_config
    复制代码
  2. 将默认注释符(#)去掉即可,内容如下

    Port 22
    Protocol 2
    PermitRootLogin yes
    
    RSAAuthentication yes 
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    复制代码
    • Port:指定端口号为22
    • Protocol:指定ssh协议版本为2
    • PermitRootLogin:允许root账号登录
    • RSAAuthentication:开启rsa安全验证
    • PubkeyAuthentication:开启公钥认证
    • AuthorizedKeysFile:设置用户公钥文件存储位置
  3. 接着保存并重启SSHD服务,让配置生效

    $ service sshd restart
    复制代码
  4. 由于AuthorizedKeysFile设置的公钥存放路径是.ssh/authorized_keys,实际上是home目录下用户目录,而我们是用git用户,所以目标目录应该是/home/git/.ssh/authorized_keys

    $ mkdir /home/git/.ssh
    复制代码
  5. 创建完成后将拥有者修改为git

    $ chown -R git:root /home/git/.ssh
    复制代码

如果是第一次配置SSHD,可通过chkconfig --level 35 sshd on设置系统自动启动SSHD

客户端创建密钥并连接

  1. 首先,在客户端创建一个SSH连接密钥,指定验证方式是RSA (默认为DSA加密算法),并输入自己的Email

    $ ssh-keygen -t rsa -C "youremail@email.com"
    复制代码

    创建了公钥和私钥,会提示保存位置,如不想改变密钥位置且无密码,几次确认后,和Linux类似,会保存到当前用户下的.ssh目录,默认为id_rsaid_rsa.pub文件。

  2. 接着,将客户端公钥导入服务器端(将IP替换为服务器IP地址)

    $ ssh git@IP 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
    复制代码
  3. 确认时还需要输入git用户密码,成功后回到服务器端查看是否存在authorized_keys文件,并修改权限

    $ chmod 700 /home/git/.ssh
    $ chmod 600 /home/git/.ssh/authorized_keys
    复制代码
  4. 客户端上再次clone仓库(将IP替换为服务器IP地址,仓库目录改成指定仓库目录),测试是否成功

    $ git clone git@IP:/opt/code/test.git
    复制代码
  5. 成功后,限制git用户通过SSH登录服务器,编辑/etc/passwd文件

    $ vim /etc/passwd
    复制代码
  6. 找到git用户的记录,将其中默认的/bin/bash改更为/bin/git-shell,实际如下

        git:x:502:504::/home/git:/bin/git-shell
    复制代码

ssh登录验证对于权限校验很严格,是以确保不出现安全问题,以上权限更改为必须的步骤。

后记

通过这种方式,之后对项目进行操作,都将通过配置好的RSA认证直接登录,免去诸多麻烦,而除了使用rsa加密算法,还有dsa加密算法,知道为什么有时候我们选择RSA进行加密吗?在实际应用场景中两者之间有什么区别呢?请听下回分解~

\(•ㅂ•)/♥ 共勉~

More Info
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值