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文件中;

目录
相关文章
|
2月前
|
安全 Linux 数据安全/隐私保护
Linux 忘记密码解决方法
Linux 忘记密码解决方法
51 2
Linux 忘记密码解决方法
|
2月前
|
Linux Shell 数据安全/隐私保护
Linux如何在服务器上进行密码的修改?
【10月更文挑战第6天】Linux如何在服务器上进行密码的修改?
182 1
|
2月前
|
Linux 数据安全/隐私保护 索引
linux inode索引节点使用率100% 解决+hustoj忘记密码+最新MDK注册方法
linux inode索引节点使用率100% 解决+hustoj忘记密码+最新MDK注册方法
47 1
|
2月前
|
Ubuntu Linux Shell
Linux系统密码忘记
【10月更文挑战第2天】在Linux系统中,若忘记密码,可以通过单用户模式或使用Live CD/USB来重置。对于Ubuntu系统,可通过GRUB引导菜单进入单用户模式,利用命令行重置密码;或使用Live CD/USB启动并挂载硬盘分区后修改密码文件。CentOS系统同样支持单用户模式重置密码,也可借助安装介质进入救援模式,挂载文件系统后进行密码重置。这些方法均能在忘记密码的情况下帮助恢复系统访问。
|
3月前
|
安全 Linux 数据安全/隐私保护
Linux强制修改用户密码
【9月更文挑战第21天】在 Linux 系统中,可使用以下方法强制修改用户密码:1. 使用 `passwd` 命令,以 root 身份运行 `passwd username` 修改密码,加 `-f` 选项可跳过复杂度检查;2. 使用 `chpasswd` 命令,通过文本文件批量设置密码;3. 结合 `usermod -e 0 username` 和 `chpasswd` 强制用户下次登录时更改密码。注意操作时需确保安全性与合理性。
338 4
|
4月前
|
安全 Linux
Linux查看和剔除当前登录用户详细教程
Linux查看和剔除当前登录用户详细教程
148 0
Linux查看和剔除当前登录用户详细教程
|
4月前
|
Linux Shell 数据安全/隐私保护
Linux用户账户管理精髓:创建、删除、密码与会话管理全攻略
本文档介绍了Linux系统中用户账户管理的关键操作,包括创建与删除用户、设置及修改密码、用户切换与会话管理等内容。通过理论说明与具体命令示例,如使用`useradd`、`userdel`、`passwd`和`su`等命令,帮助系统管理员更好地掌握这些基本技能,从而有效提升系统的安全性和管理效率。此外,还介绍了如何利用`screen`等工具进行会话管理,确保即便在网络中断的情况下也能维持会话的持续运行。
118 3
|
4月前
|
安全 关系型数据库 MySQL
在Linux中,如何重置 mysql root 密码?
在Linux中,如何重置 mysql root 密码?
|
4月前
|
JavaScript Linux API
【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤
【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤
|
4月前
|
安全 Linux 数据安全/隐私保护
在Linux中,使用rsync服务模式时,如果指定了⼀个密码文件,那么这个密码文件的权限应该设置成多少才可以?
在Linux中,使用rsync服务模式时,如果指定了⼀个密码文件,那么这个密码文件的权限应该设置成多少才可以?