歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux shell腳本實現SSH免密碼登陸

最近工作是主要在寫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

Copyright © Linux教程網 All Rights Reserved