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

來源:互聯網
上載者:User

今天看了一位大神的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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.