潜水在某个小白群里,还有人在问SSH怎么免密登录。办法其实超简单,流程如下:
1.检查本地是否有ssh key
一般情况下ssh key会存在~/.ssh/中,文件名为id_rsa.pub和id_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可以为任何名字,这个只是个默认的名字
千万千万不要弄丢私钥