Mac配置多个Git服务器仓库免密登陆

文章目录

        • 一、说明
        • 一、创建多个SSH公私钥对
        • 二、配置SSH代理验证
          • 1.GitHub参考
          • 2.实操记录
        • 三、将公钥复制到Git服务器
        • 四、测试
        • 五、其他

一、说明
  • GitHub

    SSH生成公私钥对,将公钥添加到Github账户,将私钥添加到ssh-agent代理验证。

  • 多账户

    Git查找默认私钥位置(~/.ssh/id_rsa~/.ssh/id_dsa),如果使用多用户多仓库,则需要将生成的多个SSH私钥并都添加到SSH代理。

  • 私钥加密

    可以向SSH私钥中添加密码,通过SSH代理来安全地保存。

  • Mac上预装了Git和OpenSSH

    • 免密原理:

      1.客户端:将SSH公钥储存在远程SSH服务器,携带公钥发起请求。

      2.服务端:将发送过来的公钥 与服务器authorized_keys中授权过的公钥进行比较。

      3.服务端:如果公钥一致(Key Exchange Success),向客户端发送一段使用SSH公钥加密过的随机字符串进行身份质询(Challenge)。

      4.客户端:用私钥解密后再发回给远程SSH服务器,服务器对比回包中解密出来的随机字符串是否一致。如果一致,则可信。

    • DSA、RSA、ECC

      SSH2使用DSA:DSA 只能用于数字签名,而无法用于加密。签名快,验签慢。

      SSH1使用RSA:RSA 可作为数字签名,也可作加密算法。RSA 具有更为广泛的部署与支持。

      ECC(椭圆曲线算法"-t ecdsa"):相同密钥长度下,安全性能更高。椭圆曲线算法只有在较新版本的 openssl 与 ssh-keygen 中才被支持。

    • SSH认证方式主要有2种:

      ① 基于口令的安全认证: ssh [用户名]@[IP],每次输入口令(中间人攻击);

      ② 基于密钥的安全认证: 传输一次公钥,免密登录。Git的SSH方式就是通过公钥进行认证的。

一、创建多个SSH公私钥对
  • 查看SSH公私钥对

    cd ~/.ssh
    # .pub文件为公钥,对应名字为私钥
    # known_hosts为可信服务器
    
  • 生成公私钥对:

    SSH参数说明:

    • -t :密钥类型,默认是 rsa ,可以省略。
    • -C:注释文字,常用邮箱。
    • -f: 私钥位置,默认为当前用户home路径下的.ssh隐藏目录, 也就是~/.ssh/
    • -p:添加或更改私钥密码。
    • -b 4096:密钥长度,RSA密钥,最小要求768位,默认是2048位。
  • RSA算法生成公私钥对

    # 生成内网机器的密钥对
    ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/lan_rsa
    # 对私钥加密
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again:
    # 生成gitee的密钥对
    ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/gitee_rsa
    # 生成github的密钥对
    ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/github_rsa
    
  • Github采用ed25519 算法生成公私钥对

    旧系统不支持 Ed25519 算法,Gitblit v1.9.1无法添加Ed25519生成的公钥。

    ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/lan_rsa
    ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/gitee_rsa
    ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/github_rsa
    
二、配置SSH代理验证

单账号SSH代理查找默认私钥位置,不用配置~/.ssh/config。

1.GitHub参考

文档

2.实操记录
  • 启动ssh-agent

    eval "$(ssh-agent -s)"
    
  • 编辑SSH配置文件

    • 创建文件

      touch config
      
    • 编辑文件

      # LAN
      # User 用户名(建议,不强制)
      Host http://192.168.0.1:1234/ # 服务器的主域名
      HostName http://192.168.0.1:1234/ # 服务器的主域名
      AddKeysToAgent yes # 将 SSH Key 添加到 ssh-agent
      UseKeychain yes # 将私钥添加到系统的钥匙链。如果私钥不添加密码,则不需要。
      IdentityFile ~/.ssh/lan_rsa # 私钥文件位置
      
      # gitee
      Host gitee.com
      HostName gitee.com
      AddKeysToAgent yes
      UseKeychain yes
      IdentityFile ~/.ssh/gitee_rsa
      
      # github
      Host github.com
      HostName github.com
      AddKeysToAgent yes
      UseKeychain yes
      IdentityFile ~/.ssh/github_rsa
      
  • 将SSH私钥添加到ssh-agent

    # 如果选择向私钥添加密码,则需要-K
    ssh-add -K ~/.ssh/lan_rsa
    ssh-add -K ~/.ssh/gitee_rsa
    ssh-add -K ~/.ssh/github_rsa
    
三、将公钥复制到Git服务器
  • 复制公钥到剪切板

    # 将 SSH 公钥复制到剪贴板
    pbcopy < ~/.ssh/lan_rsa.pub
    pbcopy < ~/.ssh/gitee_rsa.pub
    pbcopy < ~/.ssh/github_rsa.pub
    
  • 将公钥保存到Git服务端

    打开github ,点击头像 =>> settings =>> SSH and GPG keys =>> New SSH key

四、测试
ssh -T ssh://[email protected]:29317
ssh -T [email protected]
ssh -T [email protected]
五、其他
  • 当前登录信息

    # 查看全部配置
    git config --list
    # 查看当前登录账号:
    git config user.name
    # 查看当前登录邮箱:
    git config user.email
    # 修改全局用户名和邮箱:
    git config --global user.name "Your_username"
    git config --global user.email "Your_email"
    

你可能感兴趣的:(项目管理,ssh,git)