页首自改代码

Hey, Nice to meet You.  why ?

☆☆☆所谓豪杰之士,必有过人之节.人情有所不能忍者,匹夫见辱,拔剑而起,挺身而斗,此不足为勇也,天下有大勇者,猝然临之而不惊,无故加之而不怒.此其所挟持者甚大,而其志甚远也.          
返回顶部

Linux服务器实现无密认证

环境

t4 192.168.10.11
t5 192.168.10.12

需求

# 实现t4能够无密连接t5
[root@t4 ~]# ssh-keygen -t rsa
[root@t4 ~]# ssh-copy-id -i root@t5

解决交互式需求

# 单台做无密出现如下情况
a)
# 问题描述
当服务器ssh连接时,要输入“yes”进行确认,如下:
[root@t4 .ssh]# ssh t5
The authenticity of host 't5 (192.168.10.132)' can't be established.
ECDSA key fingerprint is 69:e5:9a:75:f4:72:52:77:85:21:70:2a:a8:85:f9:70.
Are you sure you want to continue connecting (yes/no)?
# 问题解决(以下两种方式选其一即可)
方式一:
[root@t4 .ssh]# ssh -o StrictHostKeyChecking=no t5
方式二:
在当前用户目录.ssh下创建config文件,添加如下内容
StrictHostKeyChecking=no

b)
# 问题描述
当服务器ssh连接时,要手动输入密码。
# 问题解决
安装sshpass
源码下载地址:http://sourceforge.net/projects/sshpass/
安装步骤:
# tar -zxvf sshpass-1.06.tar.gz
# cd sshpass-1.06
# ./configure
# make && make install
[root@t4 ~]# sshpass -p '000000' ssh-copy-id -o StrictHostKeyChecking=no root@t5

或者

若修改配置,则用下面命令(对应a问题的方式二):
[root@t4 ~]# sshpass -p '000000' ssh-copy-id root@t5

脚本实现批量化无密

# 将域名或IP地址记录在remote-hosts文件中,运行下面脚本就能批量的将公钥复制到远程主机中。

for host in $(cat remote-hosts)
do
    sshpass -p 'YOUR_PASSWORD' ssh-copy-id -o StrictHostKeyChecking=no root@${host}
done

注:上面的脚本试用于远程主机的密码都是相同。

# 若remote-hosts文件文件为以下格式,
10.10.10.10:2222:YOURPASSWORD

则脚本如下:

for host in $(cat remote-hosts)
do
    ip=$(echo ${host} | cut -f1 -d ":")
    port=$(echo ${host} | cut -f2 -d ":")
    password=$(echo ${host} | cut -f3 -d ":")
    sshpass -p ${password} ssh-copy-id -p ${port} -o StrictHostKeyChecking=no root@${ip}
done    

 

posted on 2017-08-22 19:29  罗穆瑞  阅读(296)  评论(0编辑  收藏  举报

导航