博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 免密登录(ansible版/非root用户)
阅读量:3522 次
发布时间:2019-05-20

本文共 2575 字,大约阅读时间需要 8 分钟。

在使用ansible的时候会遇到如果不加 -k( 通过key验证)这个参数时认证失败。

可以通过 ssh-keygen - > ssh-copy-id [-i [identity_file]] [user@]machine 把操作机的私钥添加到目标主机的密钥列表中。

ssh]# ssh-copy-id -i /root/.ssh/id_rsa.pub  root@10.50.**.**root@10.50.10.**'s password:Now try logging into the machine, with "ssh 'root@10.50.**.1*'", and check in:  .ssh/authorized_keysto make sure we haven't added extra keys that you weren't expecting. .ssh]# ssh 10.50.10.161Last login: Mon May 24 10:19:54 2021 from 10.56.**.**

需求 :A 主机想通过shh 、scp...等通过ssh协议连接主机的命令来连接B主机,但是不想输入密码。

具体操作:

1、ssh-keygen  用这个命令是用来生成本机的公钥和私钥的

2、将A主机的id_rsa.pub copy到B主机上

ansible gpservers -m copy -a 'src=/root/.ssh/id_rsa.pub dest=/root/.ssh/' -k

 3、在B主机2中的的id_rsa.pub 重定向到B主机的authorized_keys(一个信任主机列表)。注意一点要用 >> 追加,以免覆盖掉其他的密钥验证。造成其他程序报错。这点很重要

ansible gpservers -m shell -a 'cat /root/.ssh/id_rsa.pub >>  ~/.ssh/authorized_keys' -k

 以上2 、3两步可以用ssh-copy-id(会自动将第一步中生成的id_rsa.pub添加到目标主机的authorized_keys中。) 命令来实现。如果是多个主机需要一个一个执行,用ansible批量操作还是较快。

如果需要相互信任,只需要将如上步骤逆向进行即可。

需要用到ansible的fetch模块。

1、现将gpserver的18台机器上的公钥fetch到控制机

注意fetch 回来是不会被覆盖的,fetch回来的文件是放在以ip命名的一个文件夹里面

2、重定向。

----------------------------------update 2020年5月24日21:38:15--------------------------------

如若是非root用于,别于root的用户的就是需要对authorized_keys 赋权。

默认是664

ssh]$ lltotal 16-rw-rw-r-- 1 gpadmin gpadmin  796 May 24 21:35 authorized_keys-rw------- 1 gpadmin gpadmin 1675 May 24 21:17 id_rsa-rw-r--r-- 1 gpadmin gpadmin  398 May 24 21:17 id_rsa.pub-rw-r--r-- 1 gpadmin gpadmin  403 May 22 22:00 known_hosts

 非root用户ssh 自己需要710权限。这一点容易忽视,请注意

ssh]$ lltotal 16-rwx--x--- 1 gpadmin gpadmin  796 May 24 21:35 authorized_keys-rw------- 1 gpadmin gpadmin 1675 May 24 21:17 id_rsa-rw-r--r-- 1 gpadmin gpadmin  398 May 24 21:17 id_rsa.pub-rw-r--r-- 1 gpadmin gpadmin  403 May 22 22:00 known_hosts

    如果希望ssh公钥生效需满足至少下面两个条件:

      1) .ssh目录的权限必须是700 

      2) .ssh/authorized_keys文件权限必须是600

-----------------------------------update 2021年6月28日17:41:34

当然也可以用一个脚本取做

##ssh密钥分发脚本#!/bin/shread -p "输入远端服务器IP: " ip##ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pub root@$ipssh-copy-id -i ~/.ssh/id_rsa.pub root@$ipssh root@$ip 'sed -i "s/^#RSAAuthentication\ yes/RSAAuthentication\ yes/g" /etc/ssh/sshd_config'ssh root@$ip 'sed -i "s/^#PubkeyAuthentication\ yes/PubkeyAuthentication yes/g" /etc/ssh/sshd_config'ssh root@$ip 'sed -i "s/^#PermitRootLogin\ yes/PermitRootLogin\ yes/g" /etc/ssh/sshd_config'ssh root@$ip 'service sshd restart'hostname=`ssh root@${ip} 'hostname'`echo "添加主机名和IP到本地/etc/hosts文件中"echo "$ip    $hostname" >> /etc/hostsecho "远端主机主机名称为$hostname, 请查看 /etc/hosts 确保该主机名和IP添加到主机列表文件中"

转载地址:http://eshqj.baihongyu.com/

你可能感兴趣的文章
2019年03月18日 查看数据手册的注意点,极限参数、电气参数、推荐参数
查看>>
HiKey960/970用户手册;HiKey960 Development Board User Manual
查看>>
【IC8】作为一名硬件工程师,需要哪些知识?
查看>>
【书籍推荐】FPGA,xilinx
查看>>
N9-SQL注入(union注入)
查看>>
N10-sql注入(information_schema注入)
查看>>
N1-Kali虚拟机中SQLmap
查看>>
N11-sql注入(http头注入)
查看>>
N2-sqlmap初使用
查看>>
N12-sql盲注原理以及boolean盲注案例实现
查看>>
N13-sqli盲注 基于时间型
查看>>
N1 技术心得 2019-6-26
查看>>
N1-环境配置
查看>>
N2-审计方法与步骤
查看>>
N3-常见的INI配置
查看>>
代码审计 N4 常见危险函数和特殊函数(一)
查看>>
MySQL笔记
查看>>
计算机运算方法之(原码 补码 反码 移码)
查看>>
计算机组成原理之(二进制与十进制互相转换,数的定点表示与浮点数表示)例题:设浮点数字长16位,其中阶码5位(含有1位阶符),尾数11位(含有1位数符)
查看>>
冒泡排序及其优化
查看>>