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
========================================
转载请保留此段声明,且在文章页面明显位置给出原文链接,谢谢!
==============================================================================
^_^ 如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,您的“推荐”将是我最大的写作动力 ^_^
==============================================================================