• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在 centOS 上配置 Git 密钥认证自动登录

    本地客户端 centOS 虚拟机,远程服务器端仓库也是 centOS。

    在为 Git 传送创建免密码连接之前,首先确保,本地客户端能使用 git 上推下拉远程服务端 Git 仓。

    在远程服务器端中,用户种类:

    • root:系统超级用户,属于 root 组。禁止 ssh 登录远程服务器 shell。
    • admin:自定义管理员用户,属于 wheel 组。允许 ssh 登录远程服务器 shell。
    • developer:自定义普通用户,属于 develop 组。允许 ssh 登录远程服务器 shell。对项目程序代码文件,是所有者。scp、sftp 下载上传文件。
    • git:自定义普通用户,属于 develop 组。禁止 ssh 登录远程服务器 shell。对共享的 Git 仓库是所有者。Git 上传下载 Git 远程仓库。

    在本机客户端中,用户种类:

    • root:系统超级用户,属于 root 组。进入本机 ceonOS 时,默认使用的用户。为了个人方面,经常使用。



    本机客户端 centOS 上,生成 SSH 密钥

    本机 centOS 上,使用 root 用户,进行 git 操作。所以只为 root 用户生成密钥即可。若以前使用 SSH,已经创建过,这里不能再次生成了,因为 SSH 连接和 Git 传送,是相同的密钥。

    # 为 root 用户,生成 SSH 密钥
    ssh-keygen -t rsa -C "myname@email.com"
    
    Enter file in which to save the key (/root/.ssh/id_rsa): # 直接回车
    Enter passphrase (empty for no passphrase):  # 直接回车
    Enter same passphrase again: # 直接回车
    

    参数-C带的 email 地址,是给产生的秘钥对加了一个注释。每台电脑上产生秘钥对时,加注释信息内容主要跟这台机器相关的内容,并且把秘钥加入到代码托管网站的列表里面的时候,用这个跟某台电脑密切相关的名称。以后如果,不用这台电脑了,从网站上删除这个秘钥很方便。

    生成 SSH 密钥命令对话中,先要求你指定文件名,使用默认(/root/.ssh/id_rsa),直接回车,然后它会让你重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空。


    # 查看
    ls -al ~/.ssh
    

    ~:当前用户所在的目录。若当前用户是普通用户 git,那么就是/root。若当前用户是 root,那么就是/root

    • ~/.ssh/known_hosts:OpenSSH 密钥储存文件。
    • ~/.ssh/config:用户配置文件:是当前用户使用 SSH 远程连接的相关参数的配置文件。
    • ~/.ssh/id_rsa:私钥。
    • ~/.ssh/id_rsa.pub:公钥。


    cat ~/.ssh/id_rsa.pub
    
     #显示如下:
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDONr+JFh35P1D41c3T+nVJWwohYjIi09OaWVJE2M6WDS7S/U3hZLbMqothmHg7NkVN1epx6fa/YMq66KtujNhCDZMo2coReL5tBhkaPnNkHCP2kJd6fonUZK92SCf4wvNJMzZPzQswcC8xJv8/HKd7UTRkJR1xyB8iznAFVyfNrpXDGlx8a/PM2tn0M1664iXkUbypEsHo2QFidd0EYwviSaYBpcg9dG3YFCq1Fi3i82AqGB3w1PgaMsp68wxMTPf1sdOEF/ehR2gR7BNUu2blm0zXSyXtfhdM33GxCVb0LvWWJ9FPIJnB1+CzzJ15mspZtqVQ2hroc/KmzmvCmP8uXklAf0ks/RflwO7sJupdHP6ZQ0vwPQ2kjYtbbynHBMOrciybGlagU6p4ZuQpQGi+pw7cjlYO8lYb2lRMl3IsSA1RPSDvvbKkxUa7mlYbvQSMvEfOfwNjCibh0mrXvT5AACh4uYHxI5tRxjC6EUwO+fBa4EH4vvYxH83yD1H8+i0= myname@email.com
    


    在服务器端 centOS 上,添加公钥

    因为本机客户端当前用户是 root 用户,使用远程服务器端上 git 用户,进行 Git 连接,那么远程服务器端,放置公钥的文件位置是:/home/git/.ssh/authorized_keys

    cd /home/git
    ls  -al /home/git
    
    # 若没有 .ssh 目录,那么就创建一个
    mkdir .ssh/
    cd .ssh/
    touch authorized_keys
    

    把本机 root 用户的 SSH 公钥,手工复制,写入/home/git/.ssh/authorized_keys文件中。若有多个需要为每个单独命名,避免冲突,添加的验证码,需要一行一个。

    vim /home/git/.ssh/authorized_keys
    
    # 设置权限
    chown -R git:develop /home/git/
    chmod -R 700 /home/git/.ssh/
    chmod 600 /home/git/.ssh/authorized_keys