Mac配置多个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 "your_email@example.com" -f ~/.ssh/lan_rsa
    # 对私钥加密
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again:
    # 生成gitee的密钥对
    ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/gitee_rsa
    # 生成github的密钥对
    ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/github_rsa
    
  • Github采用ed25519 算法生成公私钥对

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

    ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/lan_rsa
    ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/gitee_rsa
    ssh-keygen -t ed25519 -C "your_email@example.com" -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://duke147@192.168.1.1:29317
ssh -T git@github.com
ssh -T git@gitee.com
五、其他
  • 当前登录信息

    # 查看全部配置
    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"
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上富贵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值