一、产生背景

在实际工作中,linux集群需要自动化的管理,市面上较常见的自动化运维工具诸如ansible,puppet,saltstack;轻量级的有pssh系列,这其中大多数工具使用的前提就是集群配置有公钥机可免密ssh登录集群内所有服务器,所以要先配置一台公钥机使用。

二、配置实例

1、在除公钥机外所以服务器生成密钥

[root@test ~]# cd /root/.ssh/
[root@test .ssh]# ll
总用量
-rw-r--r--. root root 11月 known_hosts
[root@test .ssh]# ssh-keygen -t rsa
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:cBjbvfy9VkWLQpJESgqLHeq923mm4EF1Vb1L4wGs0IU root@test
The key's randomart image is:
+---[RSA ]----+
| o ..++*o. |
| + + o*oE + . .|
| o o o+o+ = . o..|
|. . . .o o o * ..|
| . o S o + + .|
| . . . + .|
| + . .. |
| . = .o .. |
| o ++ .. |
+----[SHA256]-----+
[root@test .ssh]#
[root@test .ssh]# ll
总用量
-rw-------. root root 11月 : id_rsa
-rw-r--r--. root root 11月 : id_rsa.pub
-rw-r--r--. root root 11月 known_hosts
 

2、在第一台服务器上创建authorized_keys文件,并修改权限,用以保存所有服务器的公钥

[root@test .ssh]# touch authorized_keys
[root@test .ssh]# chmod authorized_keys
[root@test .ssh]# cat id_rsa.pub >> authorized_keys
 

3、将authorized_keys文件复制到下一台服务器,并重复以上两个步骤

[root@test .ssh]# scp authorized_keys root@192.168.0.11:~/.ssh/
 

4、重复以上步骤,直至最后一台服务器,将authorized_keys文件复制到公钥机对应目录下

 
[root@test .ssh]# scp authorized_keys root@192.168.0.1:~/.ssh/
[root@test .ssh]# chmod authorized_keys

5、配置自动化运维工具配置文件,并删除除公钥机外的所有机器中的authorized_keys文件(pssh为例)

 
[root@test ~]# pssh -h serverlist.txt -P -p1 "rm -rf /root/.ssh/authorized_keys"

6、测试公钥机免密ssh登录其他服务器即可

三、脚本实现

[root@Nginx bin]# yum install expect -y
[root@Nginx bin]# find / -name expect
/usr/bin/expect
[root@Nginx bin]# touch /root/.ssh/authorized_keys
[root@Nginx bin]# vim self_ssh.sh
#!/usr/bin/expect -f
#
set timeout
set ip_list [open /home/jiayimeng/bin/ip r]
while { [gets $ip_list line ]>= } {
set ip [lindex $line ]
spawn ssh root@$ip
expect "*yes/no:" { send "yes\r" }
expect "*password:" { send "123456\r" }
expect "#"
send "cat /root/.ssh/id_rsa.pub | ssh root@192.168.3.25 'cat >> .ssh/authorized_keys'\r"
expect "*password:" { send "123456\r" }
expect "#" { send "exit\r"}
interact
} ip中写明所有机器的ip地址

except

 

四、总结

在不连接外部互联网的特定集群中,公钥机的使用大大方便了运维人员管理维护集群,系统集成人员集成施工的一系列操作;同时,由于公钥机的特殊,要做好公钥机的安全工作。

linux ssh认证(公钥机)配置的更多相关文章

  1. mac/linux ssh 免密码登陆配置及错误处理

    先说一下,mac 和linux 的设置方法是一样的 一般做法可以参照http://www.tuicool.com/articles/i6nyei 第一步:生成密钥.在终端下执行命令: ssh-kege ...

  2. Linux SSH使用公钥私钥实现免登陆

    公钥和私钥(我是文盲,钥字之前都是读yao,这是多音字这里应该念yue),是成对出现的,一旦任何一个做了更改都会验证失败. 1.免登陆的实现:   使用下例中ssky-keygen和ssh-copy- ...

  3. ubuntu git生成ssh key (公钥私钥)配置github或者码云

    Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 设置Git的user name和email: git confi ...

  4. linux ssh的安装与配置以及实现密钥登录

    安装ssh服务器: yum install openssh ssh 配置文件位于/etc/ssh/sshd_config 如果需要允许root用户远程登录,那么vi /etc/ssh/sshd_con ...

  5. linux ssh利用公钥免密登陆

    1.安装检查ssh 如果没有ssh的话,需要安装 #yum  install -y openssh-server openssh-clients 2.生成秘钥 ssh-keygen -t rsa 执行 ...

  6. linux相关认证和权限配置

    [root@rsync-server-1 /]# echo 'rsync_backup:redhat' > /etc/rsync.password [root@rsync-server-1 /] ...

  7. linux ssh公钥免密码登录

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 一.SSH公钥登录原理 在平时工作中我们经常要远程登录服务器,这就要用到SSH ...

  8. linux信任公钥的配置

    一.每个用户都有自己的家目录 访问方式是:~/.ssh/id_rsa.pub 使用~就是表示家目录. 具体家目录在哪里,在用户密码配置文件中:/etc/passwd中.第6列的值就是. 可以使用~访问 ...

  9. (转)Linux SSH配置和禁止Root远程登陆设置

    原文 一.修改vi /etc/ssh/sshd_config 文件 1.修改默认端口:默认Port为22,并且已经注释掉了:修改是把注释去掉,并修改成其它的端口. 2.禁止root用户远程登陆:修改P ...

随机推荐

  1. webservice接口问题:Payload: No message body writer has been found for class domain, ContentType: application/xml

    当在使用cxf-rs的webservice的时候,有时候在传输数据,会发生这种错误 错误代码: Response-Code: 500 Content-Type: text/plain Headers: ...

  2. Yii框架2.0的视图和widgets表单的使用

    2.0的控制器的创建和action方法的添加和1.0的基本是一样的.但我发现他的widgets 的ActiveForm和1.1版本有些不一样的地方. 对于视图基本也是一样的,有render 和 ren ...

  3. LInux中的文件系统1

    2017-03-08 10:37:55 一.虚拟文件系统VFS 文件系统用于将位于磁盘上的文件按照某种方式组织进内存,并给上层应用程序提供统一的访问接口.Linux支持多种文件系统EXT2/3,NTF ...

  4. Flask之session相关

    Flask的session简介 除请求对象之外,还有一个 session 对象.它允许你在不同请求间存储特定用户的信息.它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名要使 ...

  5. centos7 设置mongodb远程连接

    /etc/mongod.conf 更改 bindIp: 127.0.0.1 为 bindIp: 0.0.0.0

  6. (0.2.5)Mysql安装——RPM方式安装

    rpm安装mysql 卸载与安装服务端   一.安装服务端与客户端 #查看RPM包中所有的文件shell> rpm -qpl mysql-community-server-version-dis ...

  7. Flask系列(十一)整合Flask中的目录结构(sqlalchemy-utils)

    一.SQLAlchemy-Utils 由于sqlalchemy中没有提供choice方法,所以借助SQLAlchemy-Utils组件提供的choice方法 import datetime from ...

  8. Python遇到SyntaxError: Non-ASCII character '\xe5' in file D:\eclipseworkspace\test\test_urllib2.py on line2

    写Python时遇到SyntaxError: Non-ASCII character '\xe5' in file D:\eclipseworkspace\test\test_urllib2.py o ...

  9. django内置 Contenttypes 框架

    一.什么是Django ContentTypes? 1.Django 包含一个ContentTypes 应用,它可以追踪安装在你的Django 项目里的所有应用,并提供一个高层次的.通用的接口用于与你 ...

  10. 聊一聊python的单例模式

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...