SSH 秘钥登陆

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH 秘钥登陆相关的知识,希望对你有一定的参考价值。

技术分享

目的: 从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中 ,此账户就可以免密码登录。

 

以上是关于SSH 秘钥登陆的主要内容,如果未能解决你的问题,请参考以下文章

ssh秘钥对免密码登陆

Centos7 配置ssh 免秘钥登陆

使用PuTTY配置秘钥登陆Linux

linux下ssh key秘钥登陆远程服务器设置

ssh登陆强制使用密码验证登陆

ssh免密登陆