今天做了一个免密配置,顺便记录一下免密配置的过程,很简单的,大家一看就会!
一、背景
首先,我们要远程到一个主机上去,是需要密码的,有时候就很麻烦,而且如果是写脚本的话还要用expect交互方式,太麻烦了,但是如果配置了免密的话就能直接ssh连接过去了,怎么样是不是很方便。
二、生成密钥文件
那我们就开始配置吧。
ssh-keygen
ssh-keygen命令来自于英文词组“SSH key generate”的缩写,其功能是用于生成SSH密钥文件。
语法格式:ssh-keygen [参数]
常用参数:
-b 指定密钥长度
-e 读取已有私钥或者公钥文件
-f 指定用来保存密钥的文件名
-t 指定要创建的密钥类型
-C 添加注释
配置的时候,输入ssh-keygen一直回车就好了,不用管这些问题。
然后我们打开/root/.ssh文件看一眼
细心的小伙伴应该发现了,还有一个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路径下有个authorized_keys文件,我们发送过来的公钥就在这里。