一、生成密钥

[root@localhost soft]# 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:pvR6iWfppGPSFZlAqP35/6DEtGTvaMY64otThWoBTuk root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|  .  o.          |
|.o  . .          |
|+. o . . o       |
| Eo o . +        |
|   o o..S.       |
|  o ..oO.o       |
| . . ..=*oo      |
|  ..o *=@+ .     |
|  .oo=+@+.o..    |
+----[SHA256]-----+

生成之后会在用户的根目录生成一个 “.ssh”的文件夹,进入“.ssh”会生成以下几个文件

[root@localhost ~]# ls -a
.  ..  anaconda-ks.cfg  .ansible  .bash_history  .bash_logout  .bash_profile  .bashrc  .cache  .config  .cshrc  .scalac  .scala_history  .ssh  .tcshrc  .viminfo

进入“.ssh”会生成以下几个文件

[root@localhost .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts

authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
id_rsa : 生成的私钥文件
id_rsa.pub : 生成的公钥文件
know_hosts : 已知的主机公钥清单
如果希望ssh公钥生效需满足至少下面两个条件:

  1. .ssh目录的权限必须是700
  2. .ssh/authorized_keys文件权限必须是600

二、远程免密登录
1.原理:

  • 客户端向服务器端发出连接请求
  • 服务器端向客户端发出自己的公钥
  • 客户端使用服务器端的公钥加密通讯密钥然后发给服务器端
  • 如果通讯过程被截获,由于窃听者即使获知公钥和经过公钥加密的内容,但不拥有私 钥依然无法解密(RSA算法)
  • 服务器端接收到密文后,用私钥解密,获知通讯密钥
    2.常用以下几种方法:
    2.1通过ssh-copy-id的方式
[root@localhost ~]# ssh-copy-id -i root@worker1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@worker1's password:Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'root@worker1'"
and check to make sure that only the key(s) you wanted were added.

2.2通过scp将内容写到对方的文件中

[root@test .ssh]# scp -p ~/.ssh/id_rsa.pub root@192.168.91.135:/root/.ssh/authorized_keys
root@192.168.91.135's password:
id_rsa.pub 100% 408 0.4KB/s 00:00
[root@test .ssh]#
[root@test .ssh]#
[root@test .ssh]#
[root@test .ssh]# ssh root@192.168.91.135
Last login: Mon Oct 10 01:27:02 2016 from 192.168.91.133
[root@localhost ~]#

或者

$ scp ~/.ssh/id_rsa.pub root@<remote_ip>:pub_key //将文件拷贝至远程服务器
$ cat ~/pub_key >>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中, 不过要登录远程服务器来执行这条命令

2.3通过Ansible实现批量免密
将需要做免密操作的机器hosts添加到/etc/ansible/hosts下:

[Avoid close]
192.168.91.132
192.168.91.133
192.168.91.134

执行命令进行免密操作

ansible <groupname> -m authorized_key -a "user=root key='{{ lookup('file','/root/.ssh/id_rsa.pub') }}'" -k

示例:

[root@test sshpass-1.05]# ansible test -m authorized_key -a "user=root key='{{ lookup('file','/root/.ssh/id_rsa.pub') }}'" -kSSH password: ----->输入密码192.168.91.135 | success >> {"changed": true, "key": "ssh-rsa    AAAAB3NzaC1yc2EAAAABIwAAAQEArZI4kxlYuw7j1nt5ueIpTPWfGBJoZ8Mb02OJHR8yGW7A3izwT3/uhkK7RkaGavBbAlprp5bxp3i0TyNxa/apBQG5NiqhYO8YCuiGYGsQAGwZCBlNLF3gq1/18B6FV5moE/8yTbFA4dBQahdtVP PejLlSAbb5ZoGK8AtLlcRq49IENoXB99tnFVn3gMM0aX24ido1ZF9RfRWzfYF7bVsLsrIiMPmVNe5KaGL9kZ0svzoZ708yjWQQCEYWp0m+sODbtGPC34HMGAHjFlsC/SJffLuT/ug/hhCJUYeExHIkJF8OyvfC6DeF7ArI6zdKER7D8M0SM  WQmpKUltj2nltuv3w== root@localhost.localdomain", "key_options": null, "keyfile": "/root/.ssh/authorized_keys", "manage_dir": true, "path": null, "state": "present", "unique": false, "user": "root"}

参考:

http://www.jb51.net/article/94599.htm

Centos7下实现免密码登录相关推荐

  1. linux下A免密码登录B

    linux下A免密码登录B 现在有两台linux服务器A:192.168.1.111,B:192.168.1.112 1.在A(192.168.123.111)生成公钥私钥对,命令如下: ssh-ke ...

  2. Centos7下实现免密登录

    一.准备环境 1) 用客户端工具(ssh client或者putty)连接到linux服务器.在root用户下输入命令 vi /etc/hosts,用vi编辑hosts文件,如下: 127.0.0.1 ...

  3. Linux初窥:Linux下SSH免密码登录配置

    目录 环境设置(root权限) 1.关闭防火墙和SELinux 2.设置主机名 3.配置hosts 4.配置sshd 秘钥设置 1.创建免密码登录账户 2.生成秘钥 3.将公钥导入到认证文件 4.设置 ...

  4. linux ssh 下实现免密码登录

    1.Linux下生成密钥 ssh-keygen的命令手册,通过"man ssh-keygen"命令: 通过命令"ssh-keygen -t rsa" 生成之后会 ...

  5. centos7 设置ssh免密码登录配置方法

    生产密钥: [root@localhost hadoop]# ssh-keygen -t dsa Generating public/private dsa key pair. Enter file ...

  6. CentOS6.9下ssh密钥登录配置步骤(免密码登录)和ssh-keygen 命令常用参数

    密钥登录步骤(免密码登录) ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,出于安全方面的考虑,介绍密钥认证方式登录到linux/unix的 ...

  7. Git私服客户端免密码登录

    原文链接:https://ithinkcry.cn/blog/view/detail/2c9ad8cc66e285ac0166f2204b630003 服务器搭建完GIT后,客户端使用SSH登录,这样 ...

  8. ssh免密码登录的原理

    工作第一天,就需要登录各种服务器,免密码登录无疑能大大的提高工作效率.以前只知道配置,今天了解了下原理. 免密码登录原理 图解,server A免登录到server B: 1.在A上生成公钥私钥. 2 ...

  9. Hadoop安装的ssh免密码登录步骤

     SSH免密码登录 假设Hadoop上有3个节点,分别为linux01,linux02,linux03. 1.在linux01的命令行执行执行以下命令:ssh-keygen -t rsa  直接回车, ...

最新文章

  1. ASP.NET 3.5 企业级开发
  2. python怎么控制while循环_Python流程控制之while循环怎么学呢?老男孩Python
  3. 鸟哥的Linux私房菜(基础篇)-第三章、主机规划与磁盘分区(三.1. Linux与硬件的搭配)
  4. Andoird --- 安卓 failed to connect to /192.168.0.135 (port 8080) after 1000ms
  5. 运行tensorflow代码出现dtypes.py:516: FutureWarning: Passing (type, 1) or '1type的解决方法(亲测)
  6. Tomcat设置网站别名
  7. 上手Caffe(一)
  8. linux下截图软件 shutter
  9. 117. php empty()函数坑
  10. 笔记本cpu温度高怎么办_夏天面团温度高怎么办?几个技巧让面温立马降下来
  11. html前端验证代码,前端js+html实现简单验证码
  12. 点分十进制IP和网络字节序IP互转
  13. BLP模型(Bell-La Padula模型)
  14. 计算机函数求各科及格率怎么求,合格率怎么算(计算及格率的方法)
  15. Windows server 2016中文语言包安装教程
  16. 阿里高管的思考方式真正厉害在哪?内部员工7000字深度干货
  17. 动态规划练习(1)--[编程题] 风口的猪-中国牛市
  18. 计算机减法函数word,Word中减法公式怎么用
  19. 时间序列分析的基本思路与步骤(入门级,新手必看!!!)
  20. 评价星星三级样式:好、一般、差

热门文章

  1. chrony 时间同步详解
  2. 适用于 Web 开发者的 Atom 编辑器插件
  3. 使用Blender创造一个Low Polygon 插画
  4. 生活充满大量非理性,读《思考,快与慢》有感
  5. 恭喜龙蜥获得中国开源云联盟2022年度中国“最佳开源实践案例”和“杰出开源贡献者”奖项
  6. 详细的微信小程序讲解
  7. 教师职称计算机教学,教师计算机职称考试++-教学.docx
  8. php读取微信收款记录,老板们,如何快速查看微信“收款记录”?简单小技巧轻松Get!...
  9. logback - 自定义日志脱敏组件,一种不错的脱敏方案
  10. 【Shell 脚本进阶】使用 bash 命令对 shell 脚本进行调试