配置本地和github的ssh密钥对:永久多ssh管理(win10)

1. 目的

方便在使用git pullgit push等的时候不需要输入账号密码

2. 生成密钥对

~/.ssh下生成密钥文件id_rsa_github(不需要管理员的cmd的,本人使用的是cmder)

cd ~/.ssh
ssh-keygen -t rsa -C key-for-github

git-1

  • ①处输入密钥文件的名称
  • ②处是使用密钥时的额外密码。可以不填直接回车跳过
  • ③处是重复确认额外密码,不设置则直接回车跳过
  • 当然也可以使用puttygen.exe来生成密钥对,将私钥拷贝到~/.ssh即可(使用puttygen.exe生成密钥对可以参考这篇博文的本地客户机生成密钥对)

3. 配置config文件(永久多ssh管理)

  • 假如曾与其他代码托管平台进行ssh关联,则需要配置~/.ssh/config文件进行多ssh管理,否则可以忽略。
  • 或者其实也可以直接使用和其他代码托管平台相同的密钥对一起管理,就可以省去生成新的密钥对和写配置文件的麻烦,直接从本文的第四点开始操作即可,看个人选择。
  • 为什么说是永久呢?因为有一次性配置的方法,当重启cmder或shell就会失效。就是ssh-agentssh-add ~/.ssh/id_rsassh-add -l的方法,这货是一次性的,在这里就不讨论了,有兴趣的小伙伴可以自行查阅相关资料。
  • 重点敲黑板config文件有几点需要注意的:

    • Host:代码托管平台的别名。讲道理其实是可以取自己喜欢的,但是这个别名和后面要用到的ssh链接 git@github.com:xxx/xxx.git 中的 @ 符号后面的内容要一致,而一般来说github默认提供的就是git@github.com,因此为了方便,github的Host写github.com即可,别取别名了
    • HostName:代码托管平台真正的IP地址或域名
    • IdentityFile:对应的密钥文件路径。必须写绝对路径,以下几种写法都是可以的,亲测有效:

      ~/.ssh/id_rsa_github
      C://Users//xxx//.ssh//id_rsa_github
      C:/Users/xxx/.ssh/id_rsa_github
      C:\\Users\\xxx\\.ssh\\id_rsa_github
      C:\Users\xxx\.ssh\id_rsa_github
    • PreferredAuthentications:配置登录时用什么权限认证。可设为publickeypassword publickeykeyboard-interactive
    • User:对应的用户名。亲测github_username写git也可以。
  • 写好的config文件如下示例,不要出现单词拼写错误,可借助高亮判断:

    cd ~/.ssh
    touch config
    vi config
    
    Host exist_server
        HostName exist_server_IP/exist_server_domain
        IdentityFile ~/.ssh/id_rsa_exist_server
        PreferredAuthentications publickey
        User username
    
    Host github.com
        HostName github.com
        IdentityFile ~/.ssh/id_rsa_github
        PreferredAuthentications publickey
        User github_username
    
    :wq

4. 在github上添加sshKey

  • 将生成的id_rsa_github.pub公钥文件用记事本打开,复制公钥内容
  • 在浏览器中打开github.com,登录账号,点击右上角的小头像,在下拉菜单中选择Settings,然后在左边菜单中选择SSH and GPG keys,再点击右上角的New SSH key,将公钥内容复制到Key的空白框中,填写Title的内容便于以后知道这个公钥是哪一个客户机的,然后点击Add SSH key,提示输入github的密码确认身份,确认后即添加成功
    git-2
    git-3
    git-4
    git-5
    git-6

5. 测试

  • 重新打开一个cmder,执行ssh -T git@github.com
D:\develop\test (master -> origin)
λ ssh -T git@github.com
Hi Yvettre! You've successfully authenticated, but GitHub does not provide shell access.
  • 大功告成,可以将代码同步到github上啦

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试