(git) 实现多ssh密钥(免密)登录不同的Git系统

1. 生成rsa密钥:

ssh-keygen -t rsa -C 'comment' -f id_rsa_xxxx

root@adam-Latitude-3480:~/.ssh# ssh-keygen -t rsa -C 'aas-gogs_adam.qiang_early-data' -f id_rsa_aas-gogs_adam.qiang_early-data

输入密钥的密码(不填代表免密)

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in id_rsa_aas-gogs_adam.qiang_early-data.
Your public key has been saved in id_rsa_aas-gogs_adam.qiang_early-data.pub.
The key fingerprint is:
SHA256:hlRquS ..... .... xJJ84 aas-gogs_adam.qiang_early-data
The key's randomart image is:
+---[RSA 2048]----+
|     =*B+        |
|                 |
|   ........      |
|                 |
|    ...   o      |
+----[SHA256]-----+
root@adam-Latitude-3480:~/.ssh# ll
总用量 16
drwx------  2 root root 4096 5月  13 18:06 ./
drwx------ 39 root root 4096 5月  13 16:57 ../
-rw-------  1 root root 1675 5月  13 18:06 id_rsa_aas-gogs_adam.qiang_early-data
-rw-r--r--  1 root root  412 5月  13 18:06 id_rsa_aas-gogs_adam.qiang_early-data.pub
-rw-r--r--  1 root root    0 5月  13 16:57 known_hosts

-t rsa -C '[email protected]' -f id_rsa_xxx

  • -t = The type of the key to generate 密钥的类型
  • -C = comment to identify the key 用于识别这个密钥的注释(很多网站和软件用这个注释作为密钥的名字)
  • -f = file name 生成文件的名字

2. 复制公钥内容

root@adam-Latitude-3480:~/.ssh# cat id_rsa_aas-gogs_adam.qiang_early-data.pub 

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrZxCjPuWEgfalfWfue1k5cY7zKjAgtv6CO

..........

4U4TJGlRKiJuUxt aas-gogs_adam.qiang_early-data

将cat的xxx.pub的内容复制到git管理页面(github/gogs)个人设置-SSH管理


3. 配置多密钥

root@adam-Latitude-3480:~/.ssh# pwd
/root/.ssh
root@adam-Latitude-3480:~/.ssh# touch config
root@adam-Latitude-3480:~/.ssh# vim config 
Host gogs.analyticservice.net 
	HostName gogs.analyticservice.net
	User git
	Port 22
	IdentityFile ~/.ssh/id_rsa_aas-gogs_adam.qiang_early-data
Host github.com
	HostName github.com
	User git
	Port 22
	IdentityFile ~/.ssh/id_rsa_github-adamqwy
Host gitee.com
	HostName gitee.com
	User git
	Port 22
	IdentityFile ~/.ssh/id_rsa_gitee-dkwm

每份秘钥要与git网址对应。然后清空known_hosts文件内容。

注:在windows环境下,找到 %Git_HOME%\etc\ssh\ssh_config 文件,将上述的config文件的配置,添加到该文件下即可,否则连不上(提示输入git用户的密码

这只是让windows下可以在Git Bash方式下使用ssh,如果
windows下如果需要使用非gitBush的方式,请参考5. win下使用其他工具提交的配置

至此,大功告成。
我们可以通过ssh命令验证结果。


4. 验证连接结果

root@adam-Latitude-3480:~/.ssh# ssh -T [email protected]
Welcome to Gitee.com, 道空无名!

-T : ssh连接时不显示终端
'[email protected]' : 以码云为例:

在"clone and download" 的时候, 选择’ssh’(注意,不是’https’),
会显示以下链接:
[email protected]:powersky/YouDaoNote.git’

冒号 ‘:’ 前的部分 ‘[email protected]’ 就是ssh地址
意思是 userName@hostName

自己搭建的gogs可能会出现连接不上的情况,检查配置gogs的用户是否是git(如果是root,是无法配置免密的)


5. win下使用其他工具提交的配置

linux下开发,前5步就足够了,但是一般情况下我们在windows下开发比较常见,最近遇到一些windows下git提交的问题,做了一些整理,如下:

5-1、使用tortoiseGit图形工具

由于该工具使用的是putty的连接方式,所以默认的private key无法直接在该工具下使用

法1:替换shh.exe文件
  1. 右击打开 Tortoise --》 settings
  2. 选择左侧的 network 结点,替换右侧的 SSH --》 SSH client
    将原tortoiseGit目录下的TortoiseGitPlink.exe,替换为
    %GIT_HOME%\usr\bin\ssh.exe
  3. 选择左侧的 Git --》 Remote 结点,在右侧的选中一条远程分支(例如:origin)
    在Putty这个输入框中,选择我们之前配好的私钥(例:id_rsa_aas-gogs_adam.qiang_early-data
法2:使用.ppk文件
  1. 在tortoiseGit安装目录下,找到并打开 puttygen.exe 文件
    (就是方法1里提到的TortoiseGitPlink.exe所属的同级目录,如果是在找不到安装目录,应该可以在开始菜单找到)
  2. 点击 Load an existing private key 后面的 Load 按钮,
    选择我们之前生成的rsa私钥(注意是一个不带后缀的文件;找不到的话,注意下文件的筛选条件[All Files])
  3. 点击 Save the generated key 后面的 Save private key 按钮,
    (最好保存为与私钥文件同名的.ppk文件,并且放在同一个文件夹下[.ssh/])
  4. 同法1的最后一步,选择刚才生成的.ppk私钥文件

上述两种方法总结起来就是两句话:

  1. 要么换成 git 默认的 ssh.exe,使用原私钥文件
  2. 要么使用原TortoiseGitPlink.exe,重新生成并使用.ppk私钥

5-2、使用IDEA自带的版本工具

windows下idea的配置,相比前者就没有那么繁琐了,他可以使用本地的Git环境就行,方法如下:

  1. 打开Settings,选择 Version Control --》 Git
  2. SSH executable 条件,将“Built-in”选择 改为 “Native”
  3. 保存设置即可

码字不易整理费时
copy之前请双手合十

你可能感兴趣的:(ssh,git)