一.1.1 服务器做无密访问
一.1.1.1 单台操作
[root@t4 ~]# ssh-keygen -t rsa
[root@t4 ~]# ssh-copy-id -i root@host
一.1.1.2 批量操作
单台做无密出现如下情况
情况一:要输入“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)?
resolve:
[root@t4 .ssh]# ssh -o StrictHostKeyChecking=no t5
或者
在当前用户目录.ssh下创建config文件,添加如下内容
StrictHostKeyChecking=no
情况二:要手动输入密码
root@t5's password:
resolve:
安装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
或者
若修改配置,则用下面命令:
[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
注:上面的脚本试用于远程主机的密码都是相同。
若文件为以下格式,
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
-------------------------------------------------------------
转载请保留此段声明,且在文章页面明显位置给出原文链接,谢谢!
------------------------------------------------------------------------------
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
------------------------------------------------------------------------------