今天做了一个免密配置,顺便记录一下免密配置的过程,很简单的,大家一看就会!

一、背景

首先,我们要远程到一个主机上去,是需要密码的,有时候就很麻烦,而且如果是写脚本的话还要用expect交互方式,太麻烦了,但是如果配置了免密的话就能直接ssh连接过去了,怎么样是不是很方便。

ssh 私钥免密登录 ssh免密钥配置_ssh

二、生成密钥文件

那我们就开始配置吧。

ssh-keygen

ssh-keygen命令来自于英文词组“SSH key generate”的缩写,其功能是用于生成SSH密钥文件。

语法格式:ssh-keygen [参数]

常用参数:

-b	指定密钥长度
-e	读取已有私钥或者公钥文件
-f	指定用来保存密钥的文件名
-t	指定要创建的密钥类型
-C	添加注释

配置的时候,输入ssh-keygen一直回车就好了,不用管这些问题。

ssh 私钥免密登录 ssh免密钥配置_ssh 私钥免密登录_02

然后我们打开/root/.ssh文件看一眼

ssh 私钥免密登录 ssh免密钥配置_ssh 私钥免密登录_03


细心的小伙伴应该发现了,还有一个known_hosts文件,那么这个文件又是干什么的呢?

当你用ssh连接到一个新的服务器的时候,ssh会让你确认服务器的信息(域名、IP、公钥),如果你确认了,就会写到known_hosts里。以后你再连接到这个服务器,但是信息改变了(通常是公钥改变了),就会提示你服务器信息改变了,你可以把它从known_hosts里删除,然后重新确认。

然后我们解释一下公钥和私钥:
密钥对:在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。
公钥:公钥用来给数据加密,用公钥加密的数据只能使用私钥解密
私钥:如上,用来解密公钥加密的数据。

三、发送公钥到目的主机

这个时候我们要用到另外一个命令了。

ssh-copy-id

ssh-copy-id命令来自于英文词组“ssh copy id”,中文译为“复制SSH信息”,其功能是用于将本地生成的SSH公钥信息复制到远程主机。

语法格式:ssh-copy-id [参数] 远程主机

常用参数:

-i 指定公钥文件

注意中间要输入一次目的主机的密码。

ssh 私钥免密登录 ssh免密钥配置_ssh_04


然后我们就可以试着远程登录了。

ssh 私钥免密登录 ssh免密钥配置_ssh_05


这样就完成啦!不过肯定有人要问了,啊你都把公钥传过去了,那公钥放在哪里呢?

那我们登陆到远程主机看一下。

同样的在~/.ssh路径下有个authorized_keys文件,我们发送过来的公钥就在这里。

ssh 私钥免密登录 ssh免密钥配置_密钥对_06