多密钥ssh-key生成与管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a463560470/article/details/69590496

多密钥ssh-key生成与管理

由于 git 大文件用 http 方式难以传输,必须使用 ssh-key,而 ssh-key 又生成了好多个。最近在各种折腾 ssh,公钥私钥上花费了很多时间,现将一些问题总结如下。系统为 Mac/Linux。

密钥的原理

SSH之所以能够保证安全,原因在于它采用了公钥加密。

整个ssh密码登录过程是这样的:

  1. 用户向远程主机发登录请求:ssh user@远程主机
  2. 远程主机收到用户的登录请求,把自己的公钥发给用户。
  3. 用户使用这个公钥,将登录密码加密后,发送回远程主机。
  4. 远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

在linux上,如果你是第一次登录对方主机,系统会出现下面的提示:

$ ssh user@host

The authenticity of host ‘host (12.18.429.21)’ can’t be established.

RSA key fingerprint is 98:2e:d7:e0:de9f:ac:67:28:c2:42:2d:37:16:58:4d.

Are you sure you want to continue connecting (yes/no)?

这段话的意思是,无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?

所谓”公钥指纹”,是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再进行比较,就容易多了。

很自然的一个问题就是,用户怎么知道远程主机的公钥指纹应该是多少?回答是没有好办法,远程主机必须在自己的网站上贴出公钥指纹,以便用户自行核对。

假定经过风险衡量以后,用户决定接受这个远程主机的公钥。

Are you sure you want to continue connecting (yes/no)? yes

系统会出现一句提示,表示host主机已经得到认可。

Warning: Permanently added ‘host,12.18.429.21’ (RSA) to the list of known hosts.

然后,会要求输入密码。

Password: (enter password)

如果密码正确,就可以登录了。

原文:http://itindex.net/detail/48724-ssh-认证-原理

密钥的生成和管理

密钥的生成

在命令行中,键入

ssh-keygen -t rsa -C "$your_email"

会生成一对密钥,默认的情况下,私钥将放在~/.ssh/id_rsa,对应的公钥则为~/.ssh/id_rsa.pub

在生成的过程中,会询问你放密钥的位置。由于每个人可能不止需要一个密钥,所以可以另存为其他名字的密钥,比如path/to/your/dir/id_rsa_new,此时它也将生成对应的公钥。

使用以下代码来查看生成的公钥

cat ~/.ssh/id_rsa.pub

将公钥复制到你需要的服务器上(比如 github,gitlab 等等)

密钥的管理

如前文所说,如果我们需要多个密钥,那么在使用中,如何确定实际使用哪一个呢?

目前为止,ssh-key 用得最多的两个 地方,一是 git 相关服务,二是远程连接服务器。

命令输入

-i指定私钥,-p指定端口,连接服务器

ssh -i path/to/your/key developer@192.168.1.237 -p 23
scp -i path/to/your/key filename developer@192.168.1.237:/diskpath

配置 ~/.ssh/config 文件

由于 git 命令不能指定私钥,所以要通过 ~/.ssh/config 文件来控制。如果没有就在~/.ssh目录创建config文件,该文件用于配置私钥对应的服务器。比如:

Host github
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa

Host tsinghua
HostName tsinghua.edu.cn
User git
IdentityFile ~/.ssh/id_rsa_new

这样,链接到 github.com 时,使用的就是 id_rsa;链接到 tsinghua.edu.cn 时,使用 id_rsa_new。另外,Host 的名字可以随便设置,并且在 ssh 后面相当于 User@HostName,比如 ssh github 等价于 ssh [email protected]

私钥密码修改

如果工作中,你使用了一个没有密码的私钥,有一天服务器被黑了,你是跳到黄河都洗不清。而生成密钥时,往往会选择一个比较简单的密码。为了安全起见,还是应该修改一下:利用ssh-keygen -p,系统会提示选择需要修改的私钥,默认是~/.ssh/id_rsa,选好文件后按回车,会提示你输入旧密码,输入好后会提示输入新密码,则修改完成。

猜你喜欢

转载自blog.csdn.net/a463560470/article/details/69590496
今日推荐