潜水在某个小白群里,还有人在问SSH怎么免密登录。办法其实超简单,流程如下:

1.检查本地是否有ssh key

一般情况下ssh key会存在~/.ssh/中,文件名为id_rsa.pubid_rsa
如果存在这个文件跳转到第3步,否则跳转到第2步。

2.创建ssh key

输入以下命令就可以生成密钥:

ssh-keygen -t rsa -C "这里输入你的邮箱"

输入完之后会有如下的提示:

Generating public/private rsa key pair.
// 这里会问你你想存在哪里,默认是~/.ssh/id_rsa,直接回车跳过
Enter file in which to save the key (/Users/{username}/.ssh/id_rsa): 
// 要求输入密码,可以留空(直接按会车)
Enter passphrase (empty for no passphrase):
// 要求确认密码,如果上面为空,这里就直接按回车。
Enter same passphrase again:
// 这里就是提示私钥、公钥存储的位置
Your identification has been saved in /Users/{username}/.ssh/id_rsa.
Your public key has been saved in /Users/{username}/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:{fingerprint}
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|                 |
|       s        .|
|  o   B X      .o|
| E . . X .     o+|
|.   . B * . . =.=|
|     o o * . .o%=|
|      . A+o.o=XXB|
+----[SHA256]-----+

然后就欢天喜地的进入第3步吧。

在第3步之前,解释一下为什么-C后面要输入邮箱
其实-C的意思是Comment,原本是用于标记识别这个key的,方便其他人看到能知道用来做什么或者知道是谁的证书
你大可以写成ssh-keygen -t rsa -C "蜜蜂的证书,勿删"
当然我还是推荐用英语写,避免给看不懂中文的人带来困扰

3.在需要访问的机器上添加你的公钥

通常情况下只需要把你的公钥(id_rsa.pub)发给服务器的管理员,让他添加就好。
如果很不巧,这个服务器你是管理员,那么就按下面的办法自己来吧,

1. 使用密码登录到需要免密码登录的服务器上(ssh 用户名@服务器)
2. 将id_rsa.pub的内容复制到~/.ssh/authorized_keys文件内,具体方法不限,
   例如你可以vi ~/.ssh/authorized_keys,
   然后把id_rsa.pub的内容粘贴到最后。

是不是嫌弃麻烦了?那用直接在刚刚创建id_rsa.pub的电脑执行:

ssh-copy-id 用户名@服务器

差不多就是这个样子了,生成好的ssh key之后还可以添加到github中哟,总之还是很方便的。

下面是其他的信息:

id_rsa.pub为公钥
id_rsa为私钥
通过id_rsa(私钥)可以生成id_rsa.pub(公钥)
私钥可以生成公钥,反之不可以。千万千万不要搞丢私钥哦!
id_rsa和id_rsa.pub可以为任何名字,这个只是个默认的名字
千万千万不要弄丢私钥