目的: 从TestA使用秘钥 免密码输入 登录到 TestB(使用root账户)
在/root 中,如果之前你没有使用ssh登录过其他linux主机,这里是没有.ssh目录的。
第一次使用ssh登录其他主机时会提出询问,登录之后就会创建.ssh目录并创建一个known_hosts文件。
这个文件中存在的注意,用户第二次登录时,就不会再次询问。
=============================================================
现在在TestA上创建秘钥。
使用 ssh-keygen 生成属于主机的秘钥对,有两种方式 :rsa和dsa 可以使用 -t 参数指定,默认是rsa。
在创建的过程中会要求你输入使用此秘钥对时的密码,为了远程时不需要手动输入密码,可以直接回车。
连接认证时,我们使用 rsa生成的秘钥对~
如果TestA远程连接到TestB,需要将TestA的共钥拷贝到TestB,并命名为authorized_keys。
上边指令意思就是 将TestA上的 共钥 id_rsa.pub内容复制到 TestB 的/root/.ssh/目录下并命名为 authorized_keys。
查看下 Testb
一切操作结束后,我们可以在TestA上做测试了
可以看到,在此链接TestB的时候就不需要输入密码了。
===================================================
小实验:
我在A上 用root账户将用这个账户生成的key复制到 B的 /home/dyg 目录下,然后我用dyg账号远程B,发下key不能生效。
在B上查看了下key文件的属性,发现其所有者是root而且只有root才有读和写权限,修改这个文件的所有者为dyg
、
然后在A上再次用dyg这个账户链接B
看以看到key生效了,所以,我们远程远端服务器所以用的账户必须对我们放置上去的key文件【也就是authorized_keys】至少有可读可写的权限。
那么我们使用一般账户生成的key能不能再远端的root账户上生效呢 ?
用一般账户dyg在A上生成了一对秘钥。
首先我们要确认在B上没有key文件。
现在我们将其复制到B上去
我用的root账户复制的,因为如果我们dyg账户,甚至都没有权限访问/root目录的。
可以看到key文件已经在B上生成了,下面测试下
可以看到,key生效了
我们继续
测试root账户是否能够使用dyg账户生成的秘钥呢 ?
如果我们直接用root账户做ssh操作,课件是肯定不行的,我们将dyg的秘钥对拷贝到自己的目录下测试。
发现key没有生效,这说明,key只能被其生成者用户所使用。
=====================
=======================
=====================
====================
由以上可以看出,即使一个普通账户生成的key只要被复制到远端服务器的/root/.ssh中 ,此账户就可以免密码登录。