About SSH keys

Generating an SSH key(生成SSH key)

SSH密钥是来识别值得信赖的电脑的方法。您可以生成一个SSH密钥,并按照本节所述的方法将公共密钥添加到您的帐户GitHub中。

私钥:添加到本地ssh-agent

公钥:添加到github远程setting

1. Checking for existing SSH keys(检查已存在的SSH key)

在你生成一个ssh key之前,你可以检查一下你是否已经有了ssh key:
打开Git Bash
输入

$ ls -al ~/.ssh

来查看是否有ssh key存在
检查/.ssh目录来查看是否存在公开的ssh key
一般而言,公开的ssh key的文件名为以下几种:

id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub

2. Generating a new SSH key and adding it to the ssh-agent(生成一个新的SSH key并添加到ssh-agent)

在你检查过存在的ssh key后,你可以新建一个ssh key:
打开Git Bash
输入这一串:

$ ssh-keygen -t rsa -b 4096 -C "[email protected]"

还可以自定义生成key文件名和路径:

$ ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/id_test

生成一个新的ssh key,使用填入的邮箱地址作为ssh key的标签,并生成RSA密钥对
看到如下提示时:

$ Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

按下回车,表示把ssh key放在默认地址
然后为ssh key设置密码:

$ Enter passphrase (empty for no passphrase): [Type a passphrase]  
$ Enter same passphrase again: [Type passphrase again]  

创建完ssh key后,你需要把它添加到ssh-agent中去:
首先保证ssh-agent启用了:

$ eval "$(ssh-agent -s)"  

该指令返回进程id则表示已经启用ssh-agent
使用如下指令把ssh key添加到ssh-agent中:

$ ssh-add ~/.ssh/id_rsa  

3. Adding a new SSH key to your GitHub account(为你的github账号添加SSH key)

在把ssh key添加到ssh-agent后,你需要把ssh key添加到你的github账号中:

  • 打开Git Bash,使用指令把ssh key复制到剪贴板:
clip < ~/.ssh/id_rsa.pub  

如果不成功就用编辑器打开该文件直接复制内容

  • 在github右上角点击setting:
About SSH keys_第1张图片
image
  • 在左边选择SSH and GPG keys:
About SSH keys_第2张图片
image
  • 点击New SSH key:
About SSH keys_第3张图片
image
  • 在Title处为你的ssh key填入适当的标题,在Key处粘贴你复制的ssh key
About SSH keys_第4张图片
image
  • 点击Add SSH key:
image
  • 输入你的github账号密码确认此次行动.

4. Testing your SSH connection(测试你的SSH连接)

在进行完上面一系列操作后,是时候看看你的SSH连接是否成功了:

  • 打开Git Bash
  • 输入以下指令:
ssh -T [email protected]  

尝试去用ssh连接github,你可能会看到一些警告信息:

The authenticity of host 'github.com (192.30.252.1)' can't be established.  
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.  
Are you sure you want to continue connecting (yes/no)?  

输入yes不管他就好

  • 如果你看到一下信息:
Hi username! You've successfully authenticated, but GitHub does not provide shell access  

则表示ssh连接成功了

  • 如果提示"access denied" ,参考链接进一步处理
    error-permission-denied-publickey

5.删除本地SSH KEY私钥的密码

  • 使用openssl命令去掉私钥的密码
openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa_new
  • 备份旧私钥
mv ~/.ssh/id_rsa ~/.ssh/id_rsa.backup
  • 使用新私钥
mv ~/.ssh/id_rsa_new ~/.ssh/id_rsa
  • 设置权限
chmod 600 ~/.ssh/id_rsa

踩到的坑

  • GitLab配置新生成的SSH KEY后,本地使用git命令操作,任旧提示输入密码,怎么办?

原因是本地未加载启用对应的SSH KEY私钥。

解决方案:先eval,再ssh-add添加私钥。即可解决。

  • 添加了私钥后,关闭Bash命令窗口,重新打开,任旧提示输入密码,怎么办?

原因:ssh默认的私钥文件是id_rsa,ssh-agent加载的配置是临时性的,重启就会重置掉,然后读取默认的key(即id_rsa),恰好我生成的key文件名不是id_rsa,这样一来,gitlab配置的是公钥A.pub,本地读取的私钥是id_rsa,两者不匹配,导致提示输入密码。

解决方案:将私钥A文件名改成默认key文件名id_rsa,即可。

你可能感兴趣的:(About SSH keys)