最近工作是主要在寫shell腳本,這中間有個功能就是要實現機器之間的SSH免密碼登陸,在此我把我成功執行的步驟記下來。
1、首先生成本地的 authorized_keys(我這個是root用戶)
ssh-keygen -q -t rsa -N "" -f /root/.ssh/id_rsa
cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
chmod go-rwx /root/.ssh/authorized_keys
2、需要安裝expect,安裝expect的時候,如果你的linux可以聯網,那直接yum就搞定了。
如果你的機房像我一樣,沒有外網,並且你找那些安裝包,和依賴包又不會,或者不方便的情況下,可以按照下面我的經驗做。
(1)用你自己的機器,前提你自己的機器可以聯網。下載一個yum插件:yum-downloadonly :yum -y install yum-downloadonly
(2)然後 yum -y install --downloadonly --downloaddir=/root/ expect (--downloadonly 就是只下載不安裝,--downloaddir就是下載到哪裡,自行修改),然後在/root/ 下可以看到你下好的expect包和依賴包。
(3)你把下載好的文件,拷貝到服務器上就可以安裝了。
3、腳本
#!/bin/sh
#pqj,2014-11-12,SSH免密碼登錄
#$1:遠程機器密碼
#$2:遠程機器IP
auto_ssh_copy_id () {
expect -c "set timeout -1;
spawn ssh-copy-id $2;
expect {
*(yes/no)* {send -- yes\r;exp_continue;}
*assword:* {send -- $1\r;exp_continue;}
eof {exit 0;}
}";
}
auto_ssh_copy_id yourpassword yourIP
Shell編程淺析 http://www.linuxidc.com/Linux/2014-08/105379.htm
Linux Shell參數替換 http://www.linuxidc.com/Linux/2013-06/85356.htm
Shell for參數 http://www.linuxidc.com/Linux/2013-07/87335.htm
Linux/Unix Shell 參數傳遞到SQL腳本 http://www.linuxidc.com/Linux/2013-03/80568.htm
Shell腳本中參數傳遞方法介紹 http://www.linuxidc.com/Linux/2012-08/69155.htm
Shell腳本傳遞命令行參數 http://www.linuxidc.com/Linux/2012-01/52192.htm
Linux Shell 通配符、轉義字符、元字符、特殊字符 http://www.linuxidc.com/Linux/2014-10/108111.htm