Linux的密钥——实现无密码登录

简介: 1、安全密钥加密是对信息进行编码和解码的技术,它通过一定的算法(密钥)将原本可以直接阅读的明文信息转换成密文形式。密钥即是密文的钥匙,有私钥和公钥之分。在传输数据时,如果 担心被他人监听或截获,就可以在传输前先使用公钥对数据加密处理,然后再行传送。

1、安全密钥

加密是对信息进行编码和解码的技术,它通过一定的算法(密钥)将原本可以直接阅读的明文信息转换成密文形式。密钥即是密文的钥匙,有私钥和公钥之分。在传输数据时,如果 担心被他人监听或截获,就可以在传输前先使用公钥对数据加密处理,然后再行传送。这样, 只有掌握私钥的用户才能解密这段数据,除此之外的其他人即便截获了数据,一般也很难将其破译为明文信息。

一言以蔽之,在生产环境中使用密码进行口令验证终归存在着被暴力破解或嗅探截获的 风险。如果正确配置了密钥验证方式,那么 sshd 服务程序将更加安全。

密钥就是密文的钥匙的简称,其实际上是一种加密算法,有公私钥之分。

2、无密码登录实现

以root用户身份登录主机A,然后通过命令ssh-keygen生成公私密钥对,将这个用户的公钥放到主机B上。这样,这个用户以后再用ssh连接主机B时,不用输入密码就能直接登录成功。

实现步骤:
1、root用户身份登录主机A,通过ssh-keygen命令生成公私密钥:

[root@jiang ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
#指定私钥的保存文件,不指定默认是/root/.ssh/id_rsa文件  
Enter passphrase (empty for no passphrase):  
#这里是为私钥设置密码,可以不设置,直接回车
Enter same passphrase again:   #再次输入私钥密码
Your identification has been saved in /root/.ssh/id_rsa.
#私钥的配置文件是/root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub.
#公钥的配置文件是/root/.ssh/id_rsa.pub

2、将生成的公钥放到主机B上:

[root@jiang ~]# ssh-copy-id root@172.16.21.77
   root@172.16.21.77's password:
Now try logging into the machine, with "ssh 'root@172.16.21.77'", and check in:
     .ssh/authorized_keys  #表示将公钥保存到主机B家目录下的.ssh/authorized_keys文件中
     to make sure we haven't added extra keys that you weren't expecting.

3、验证是否成功:
ssh 主机B的IP

4、设置只允许密钥验证登录(可选)
可以对服务器B设置为只允许密钥验证登录,拒绝传统的口令验证方式。记得在 修改配置文件后保存并重启 sshd 服务程序。
在服务器B上进行下面设置:

[root@jt ~]# vi /etc/ssh/sshd_config
PasswordAuthentication no   #在文件中找到这一行,并将yes修改为no
[root@jt ~]# systemctl restart sshd

这样,只有A服务器可以免密登录,其他服务器无法通过传统的口令验证方式登录B服务器,除非也设置免密登录。

5、配置ssh hostname登录方式
如果IP记不住,可以考虑设置这种登录方式。在服务器A上进行如下设置:

在/etc/sysconfig/network文件中添加:
NETWORKING=yes
HOSTNAME=*

在/etc/hosts文件的最后一行添加主机A和B的ip和主机名:
A_IP A_HOSTNAME
B_IP B_HOSTNAME

重启network服务:service network restart

6、可以通过ssh hostname登录主机

3、过程说明

1、ssh-keygen命令用于生成公私钥,可以加-t rsa,也可以不加;
2、每一个用户都有自己的公私密钥,不可混淆。用户的公私密钥都默认放在家目录的.ssh目录下
3、ssh-copy-id用于将公钥上传到别的主机,用法类似scp。通用格式是:
ssh-copy-id [-i 公钥文件] [用户名]@主机IP
不指定文件就默认上传公钥文件;
不指定以什么用户登录主机B的话,就默认以当前用户登录,前提是主机B有这个用户;
4、ssh-copy-id命令原理是将主机A公钥的内容添加到主机B的authorized_keys文件中;

目录
相关文章
|
25天前
|
监控 安全 Shell
【Shell 命令集合 系统管理 】Linux 查看系统上的失败登录记录 lastb命令 使用指南
【Shell 命令集合 系统管理 】Linux 查看系统上的失败登录记录 lastb命令 使用指南
32 0
|
25天前
|
安全 Unix Shell
【Shell 命令集合 网络通讯 】Linux 向所有当前登录的用户发送消息或通知 wall命令 使用指南
【Shell 命令集合 网络通讯 】Linux 向所有当前登录的用户发送消息或通知 wall命令 使用指南
28 0
|
25天前
|
监控 Linux Shell
【Shell 命令集合 网络通讯 】Linux管理终端设备的登录过程 getty命令 使用指南
【Shell 命令集合 网络通讯 】Linux管理终端设备的登录过程 getty命令 使用指南
31 0
|
25天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
42 1
|
25天前
|
Unix Shell Linux
【Shell 命令集合 系统管理 】Linux 显示当前登录用户的登录名 logname命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示当前登录用户的登录名 logname命令 使用指南
27 0
|
25天前
|
存储 安全 Shell
【Shell 命令集合 系统设置 】⭐⭐⭐Linux 更改用户密码 passwd命令 使用指南
【Shell 命令集合 系统设置 】⭐⭐⭐Linux 更改用户密码 passwd命令 使用指南
35 0
|
7天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
14 0
|
25天前
|
存储 安全 Shell
【Shell 命令集合 系统管理 】Linux 显示系统中所有用户的登录记录 last命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示系统中所有用户的登录记录 last命令 使用指南
31 0
|
7天前
|
Linux 网络安全 数据安全/隐私保护
linux免密登录最简单--图文详解
linux免密登录最简单--图文详解
19 2
|
25天前
|
存储 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示当前登录用户的用户 whoami命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示当前登录用户的用户 whoami命令 使用指南
39 1