Centos7通过SSH使用密钥如何实现免密登录

 更新时间:2024年11月30日 11:06:16   作者:天河一粟  
PublicKey认证是一种无需密码即可登录远程系统的安全方式,基于一对密钥:publickey和privatekey,通过在远程系统上放置publickey,本地使用privatekey进行解密,从而验证身份,在CentOS 7上,可以通过生成密钥对并在远程系统上配置authorized_keys文件来实现免密登录

概述

  • Public Key认证的主要魅力在于认证时承诺不必提供密码就能够同远程系统建立连接。
  • Public Key认证的基础在于一对密钥,public key和private key,public key对数据进行加密而且只能用于加密,private key 只能对所匹配的public key加密过的数据进行解密。
  • 我们把public key放在远程系统合适的位置,然后从本地开始进行ssh连接。
  • 此时,远程的sshd会产生一个随机数并用我们产生的public key进行加密后发给本地,本地会用private key进行解密并把这个随机数发回给远程系统。
  • 最后,远程系统的sshd会得出结论我们拥有匹配的private key允许我们登录。

一、serverA 免密登录 serverB 原理

  1. 首先在 serverA 上生成一对秘钥(ssh-keygen)
  2. 将公钥拷贝到 serverB,重命名 authorized_keys
  3. serverA 向 serverB 发送一个连接请求,信息包括用户名、ip
  4. serverB 接到请求,会从 authorized_keys 中查找,是否有相同的用户名、ip,如果有 serverB 会随机生成一个字符串
  5. 然后使用使用公钥进行加密,再发送个 serverA
  6. serverA 接到 serverB 发来的信息后,会使用私钥进行解密,然后将解密后的字符串发送给 serverB
  7. serverB 接到 serverA 发来的信息后,会给先前生成的字符串进行比对,如果一直,则允许免密登录

二、Centos7 默认安装了 ssh服务

启动 ssh 服务

# 查看 ssh 状态
systemctl status sshd
# 启动 ssh
systemctl start sshd
# 停止 ssh
systemctl stop sshd

三、serverA 生成秘钥

遇到提示直接敲回车即可

CentOS7 默认使用RSA加密算法生成密钥对,保存在~/.ssh目录下的id_rsa(私钥)和id_rsa.pub(公钥)。

也可以使用“-t DSA”参数指定为DSA算法,对应文件为id_dsa和id_dsa.pub,密钥对生成过程会提示输入私钥加密密码,可以直接回车不使用密码保护。

[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):    
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:/gGrlDJN5euMS5aai5feBkEI/0WjEnzPzx1xGtdkKG4 root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|.o..  o      +o  |
| .o.oo .  + +..  |
|  oo.o. .. B     |
|   o..oo  E      |
|    ...oSo .     |
|    .o +o+.      |
|    ooB + .      |
|   .oX.= . .     |
|  .o=o=.o .      |
+----[SHA256]-----+
[root@localhost ~]# ls ~/.ssh/
id_rsa  id_rsa.pub  known_hosts
[root@localhost ~]# 

四、解决找不到 .ssh 目录

如果在上面生成秘钥后,执行 cd ~/.ssh 找不到 .ssh 目录,是因为没有使用 ssh 登录过,使用 ssh 登录一下即可生成 .ssh 目录,之后再重新执行 ssh-keygen 生成秘钥即可

[root@localhost ~]# ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:DYd7538oOsqpIIDTs01C3G4S6PRE7msA91yUgk9Dzxk.
ECDSA key fingerprint is MD5:88:80:21:03:b2:52:6b:06:ff:c7:3b:d5:2d:47:c9:ad.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
root@localhost's password: 
Last login: Fri Oct 26 16:15:57 2018 from localhost
[root@localhost ~]# ls ~/.ssh/
known_hosts
[root@localhost ~]# exit
登出
Connection to localhost closed.
[root@localhost ~]# 

五、移动 id_rsa.pub 文件

# 将 serverA ~/.ssh目录中的 id_rsa.pub 这个文件拷贝到你要登录的 serverB 的~/.ssh目录中
scp ~/.ssh/id_rsa.pub 192.168.0.101:~/.ssh/
# 然后在 serverB 运行以下命令来将公钥导入到~/.ssh/authorized_keys这个文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 另外要注意请务必要将服务器上
~/.ssh权限设置为700
~/.ssh/authorized_keys的权限设置为600
# 这是linux的安全要求,如果权限不对,自动登录将不会生效

六、验证免密登录

ssh 192.168.101

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • VMware配置VMnet8网络的方法步骤

    VMware配置VMnet8网络的方法步骤

    本文主要介绍了VMware配置VMnet8网络的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • VMware 10 中为CentOS 7添加多网卡并重命名

    VMware 10 中为CentOS 7添加多网卡并重命名

    这篇文章主要介绍了VMware 10 中为CentOS 7添加多网卡并重命名的相关资料,需要的朋友可以参考下
    2017-01-01
  • 解决VMWare安装Mac系统后无法全屏显示的问题

    解决VMWare安装Mac系统后无法全屏显示的问题

    这篇文章主要介绍了VMWare安装Mac系统后无法全屏显示的问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • vmware虚拟机怎么克隆 VMware11.0.0虚拟机克隆

    vmware虚拟机怎么克隆 VMware11.0.0虚拟机克隆

    vmware虚拟机怎么克隆?这篇文章主要为大家详细介绍了vmware虚拟机的克隆方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • vmware虚拟机如何安装Android x86

    vmware虚拟机如何安装Android x86

    这篇文章主要介绍了vmware虚拟机如何安装Android x86问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • VMware ESXi 5.5部署与配置图解过程

    VMware ESXi 5.5部署与配置图解过程

    虚拟化最近几年特别火热,因为整合IT资源,节约成本,容易维护,下面给大家介绍VMware ESXi 5.5部署与配置图解过程,感兴趣的朋友一起看看吧
    2021-06-06
  • VMware虚拟机安装Fedora 27 Workstation正式版(图文)

    VMware虚拟机安装Fedora 27 Workstation正式版(图文)

    这篇文章主要介绍了VMware虚拟机安装Fedora 27 Workstation正式版(图文),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • VMware12和CentOS7共享文件夹问题解析

    VMware12和CentOS7共享文件夹问题解析

    为了更好的解决虚拟机与主机的共享问题,VMware公司有一个VMWare-tools,来实现文件共享,这里主要讲的是在Windows下用 Vmware虚拟Linux来与windows来共享
    2016-11-11
  • VMware15虚拟机桥接模式无法上网问题的解决

    VMware15虚拟机桥接模式无法上网问题的解决

    这篇文章主要介绍了VMware15虚拟机桥接模式无法上网问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • MacOSX10.11安装VMware Tools图文详解

    MacOSX10.11安装VMware Tools图文详解

    这篇文章主要介绍了MacOSX10.11安装VMware Tools图文详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02

最新评论