博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多账号配置SSH
阅读量:6995 次
发布时间:2019-06-27

本文共 4069 字,大约阅读时间需要 13 分钟。


简书地址 :

博客地址 :

掘金地址 :


快捷说明

熟练者忘记查询, 详细解析在下面模块

$ cd ~/.ssh								// 进入文件夹$ ssh-keygen -t rsa -C "邮箱地址"		// 配置密钥对$ ssh-add rsa文件的路径/xxx_rsa			// 添加配置$ git config --global(local) user.name "你的名字"$ git config --global(local) user.email "你的邮箱"$ vim ~/.ssh/config 					// 添加新的账号配置复制代码

背景介绍

为什么要配置SSH

作为一个正常上班搬砖程序猿,Git 应该是目前主流的代码管理工具,而Git在提交时有两种方式:Https 和 SH 两种验证方式。

  • Https : 输入账号密码,每次都要输入(麻烦,程序猿从来不做重复工作)
  • SSH : 提交代码时通过GIT服务器的公钥与本地私钥做验证。(配置一次,无须每次输入账号密码)

SSH(简单原理说明)

生成一对公钥-私钥,公钥添加到Git服务器,私钥放在本地。提交代码时通过GIT服务器的公钥与本地私钥做验证,如果验证通过则提交成功,简单说就是把账号和密码托管给SSH, 账号就像我们的QQ号码,是公开的可见的,密码只有我们自己知道,本地私钥就是代码我们输入密码的过程,切安全。

1. 生成SSH-KEY

1.1 打开命令行(终端),测试终端是否支持SSH

```$ ssh -V```复制代码
  • 如果支持,可能看到类似以下版本信息:

    OpenSSH_7.4p1, LibreSSL 2.5.0复制代码
  • 测试如果不识别SSH,则需要另行安装,Mac默认带有ssh,不需要安装

1.2 生成公钥私钥

  • 用命令行进入存放ssh的文件夹,然后输入指令,引号内输入你Git的的邮箱地址

    $ cd ~/.ssh$ ssh-keygen -t rsa -C "邮箱地址"复制代码

    接下来会提示:

    Generating public/private rsa key pair.Enter file in which to save the key (~/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again: 复制代码
  • 生成ras的公钥私钥对

    输入保存这个Key的地址,一般直接输入文件名就好(也可以输入绝对路径),即在当前目录下的名字,为了区分一般可以按照用途起名,比如company_xx,之后会提示你输入管理该密钥对的密码,这里会输入两次校验,根据需要自己输入, 完成后即创建成功,会提示类似如下信息

    Your identification has been saved in xxxGitHub.Your public key has been saved in xxxGitHub.pub.The key fingerprint is:SHA256:7KVBN59ZHVBky18lBoBnBfhRQXY579Njn6JsYXHm1IA 	xxx@qq.comThe key's randomart image is:+---[RSA 2048]----+|        s oo*O+B*.||        o + +=o+||        .+o.  +=o||       o ..+ B .+||        S  .o||       . + o . +||        o . . . =||          .. . ..||          .o. .  |+----[SHA256]-----+复制代码
  • 此时在终端输入ls,则会看到当前目录已经有了我们生成好的公钥私钥文件xxxGitHub xxxGitHub.pub, .pub文件即是公钥

    $lsxxxGitHub     xxxGitHub.pub复制代码

2. 单个账号的配置 -- 全局Git配置

大部分人使用Git一般是一个账号

因为一般自己笔记本维护自己的github, 公司电脑维护公司的git, 所以先介绍单个git账号配置

2.1 将生成的SSH-KEY分别配置给服务器和本地。

  • 将第一步生成的xxx.pub 公钥中的内容添加到git的SSH中,即在网页上GitHub或Gitlib的设置(setting)中可以找到ssh这个菜单项。

  • 把SSH-KEY配置给SSH,让系统SSH知道这个KEY,如果你是在其他文件夹中生成的密钥对必须 拷贝到~/.ssh文件夹 中,然后输入如下指令,将当前rsa私钥(不带.pub文件) 添加到SSH-Agent.

    $ ssh-add rsa文件的路径/xxx_rsa复制代码

输入后会校验之前我们在上面 1.2 步骤中设置的密钥密码,校验成功后会提示 Identity added: xxx_rsa (xxx_rsa)

如果设置失败,首先检查当前目录是否为 **~/.ssh**, 然后如果提示如下,请执行`eval $(ssh-agent)` 后再重新添加,如果还不行,请执行`ssh-agent bash`再次尝试添加,如果还有问题请另行查阅,本文主要介绍配置多个ssh.```Could not open a connection to your authentication agent.```复制代码

2.2 配置Git全局用户和邮箱:(邮箱为你git对应的邮箱)

$ git config --global user.name "你的名字"$ git config --global user.email "你的邮箱"复制代码

配置完成后可打开 ~/.gitconfig查看配置

$ vim ./gitconfig复制代码

内容大致如下

[user]    name = xxx    email = xxx@foxmail.com复制代码

此时单个账号配置全部结束

3. 多个Git帐号的配置——局部Git配置

大部分人使用Git一般是一个账号, 所以步骤2中可以完成,但是如果你考虑到以后可能维护多个,或者像本人想在公司电脑里使用公司邮箱的gitlab与自己的github一起,这时就需要配置多个私钥对。

3.1 上面配置ssh密钥对 1.2 时提到起名防止冲突,所以这里不再介绍,反正原则就是一个账号对应一对密钥(xx, xx.pub).

3.2 接下来服务器添加公钥步骤同2.1中添加公钥的步骤,第二部为SSH配置私钥位置时和上面方法不同,我们需要在**.ssh**文件夹中新建一个config的文件(名字可以自己取,但是不要有冲突和当前目录下), touch config ,然后通过指令vim config进入config文件,键盘敲击小写字母a进入编辑模式,输入如下内容:

Host gitlib.com    HostName gitlib.com    User xxx@foxmail.com    PreferredAuthentications publickey    IdentityFile id_rsa_gitlibHost oschina.com    HostName oschina.com    User xxx@foxmail.com    PreferredAuthentications publickey    IdentityFile /D/Workspace/ssh/id_rsa_oschinaHost 192.168.1.222    HostName 192.168.1.222    User xxx@foxmail.com    PreferredAuthentications publickey    IdentityFile /D/Workspace/ssh/id_rsa_oschina复制代码

注意:

  • HostName是服务器的地址,User是用户名,PreferredAuthentications照抄即可,这里主要说的是IdentityFile,上面我们看到了三种情况,所以它的书写原则是:

    • 填私钥文件的本地路径。
    • 不论是Linux还是Windows都可以写相对路径,比如把id_rsa_xxx私钥文件放在.ssh文件夹下。
    • 文件放在不同跟路径下时,需要写绝对路径
  • HostName 不可带http或https开头

3.3 将所有的id_rsa私钥文件添加到SSH-Agent

3.4 最后,配置局部邮箱 在上面步骤我们配置了全局的邮箱即如果是通过该邮箱的项目ssh的配对已经完成,如果是其他账户的项目则需要进入该仓库文件夹后配置,配置命令如下:

$git config --local user.name "你的名字"$git config --local user.email "你的邮箱"复制代码

配置成功后,我们可以进入项目文件夹下的.git文件夹查看config文件内容,大概内容如下:

...[user]    name = xxx    email = xxx@foxmail.com复制代码

此时配置全部结束,请查看下方测试SSH-KEY配置是否成功进行测试。如果配置成功,你就可以clone和commit了。

4. 测试SSH-KEY配置是否成功

  • 如果你是Github:
$ ssh -T git@github.com复制代码
  • 如果你是Gitlib:
$ ssh -T git@gitlib.com复制代码
  • 如果你是局域网10.12.22.201
$ ssh -T git@10.12.22.201复制代码
  • 其他自行递归解决
$ ssh-add rsa私钥文件的路径复制代码

转载地址:http://uwdvl.baihongyu.com/

你可能感兴趣的文章
[pandas] SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
查看>>
J2EE第三课协议Protocol随课笔记
查看>>
JAVA两种XML解析方式 SAX和DOM
查看>>
zw版【转发·台湾nvp系列Delphi例程】HALCON InpaintingCt2
查看>>
POJ2155 Matrix
查看>>
【第二组】项目冲刺(Release版本)第二次每日例会 2017/7/26
查看>>
Docker笔记02-日志平台ELK搭建
查看>>
nginx url rewrite break和last的区别
查看>>
POJ - 3984 迷宫问题
查看>>
初步体验libsvm用法3(matlab实例)
查看>>
Linux实践四:ELF文件格式分析
查看>>
查看innodb表空间
查看>>
两行代码搞定UI主流框架
查看>>
Android之TabHost布局
查看>>
jQuery 源码:属性
查看>>
常见的文件以及4大对象
查看>>
win Server 2008 笔记
查看>>
黑客内参详解如何通过API调用来分析恶意软件
查看>>
OpenCV入门:(七:OpenCV取随机数以及显示文字)
查看>>
预测氨基酸替换的致病性及分子机制:MutPred工具的使用
查看>>