linux_linxu中/usr/bin/ssh-copy-id: ERROR: No identities found

更新时间:2019-05-11    来源:linux    手机版     字体:

【www.bbyears.com--linux】

今天看了一位大神的ssh密钥分发脚本,其中他shell脚本里有一条ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pub root@$ip,我执行后,报/usr/bin/ssh-copy-id: ERROR: No identities found,然后网上找了下-o StrictHostKeyChecking=no这项的含义,原来是强制不检查key,但ssh-copy-id我这里是不能使用的,所以最后我只能把-o StrictHostKeyChecking=no给去掉.
原来的脚本:

 代码如下

#!/bin/sh
read -p "输入远端服务器IP: " ip
ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pub root@$ip
ssh 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/hosts
echo "远端主机主机名称为$hostname, 请查看 /etc/hosts 确保该主机名和IP添加到主机列表文件中"

修改后的脚本:

 代码如下

#!/bin/sh
read -p "输入远端服务器IP: " ip
ssh-copy-id -i ~/.ssh/id_rsa.pub root@$ip
ssh 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/hosts
echo "远端主机主机名称为$hostname, 请查看 /etc/hosts 确保该主机名和IP添加到主机列表文件中"


这样的话就不会再报/usr/bin/ssh-copy-id: ERROR: No identities found错误了.

ssh密钥分发脚本
首先是生成ssh key脚本

 代码如下

#!/bin/sh
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

ssh-keygen一般来说需要输入passphrase,但是一般都是三个回车过去了,我懒的输入,加上-P ""就不用了。


然后是添加公钥到从节点的脚本

 

 代码如下 #!/bin/sh
read -p "输入远端服务器IP: " ip
ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pub root@$ip
ssh 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/hosts
echo "远端主机主机名称为$hostname, 请查看 /etc/hosts 确保该主机名和IP添加到主机列表文件中"
echo "主机公钥复制完成"

然后是第三个脚本读取主机列表然后把/etc/hosts复制到所有主机上

 代码如下

#!/bin/sh
cat /etc/hosts | while read LINE
do
    ip=`echo $LINE | awk "{print $1}" | grep -v "::" | grep -v "127.0.0.1"`
    echo "Copying /etc/hosts to ${ip}"
    scp -o StrictHostKeyChecking=no /etc/hosts root@${ip}:/etc/
done

参考:

http://blog.slogra.com 与51cto.com

本文来源:http://www.bbyears.com/caozuoxitong/50451.html

猜你感兴趣

热门标签

更多>>

本类排行