SSH 免密碼登錄

1.在A機生成公鑰和私鑰node

ssh-keygen -t rsa –P
通常採用的ssh的rsa密鑰:
id_rsa     私鑰
id_rsa.pub 公鑰
下述命令產生不一樣類型的密鑰
ssh-keygen -t dsa

 

2.把A機下的/root/.ssh/id_rsa.pub 複製到B機的 /root/.ssh/authorized_keys文件裏,先要在B機上建立好 /$HOME/.ssh 這個目錄,用scp複製。ssh

scp XXX@192.168.1.12:/$HOME/.ssh/id_rsa.pub  $HOME/.ssh/
cat id_rsa.pub  >>$HOME/.ssh/authorized_keys
chmod 600  $HOME/.ssh/authorized_keys

3.若是要互相免密碼登錄,則須要在將B機的公鑰拷貝到A機上。spa

4.執行腳本code

sudo yum install expect.



function settingSShNoLogin(){
   echo "setting ssh no login"
      pwd="\r"
      keyGen="ssh-keygen -t rsa -f $HOME/.ssh/id_rsa"
      chmod="chmod g-w  $HOME/.ssh/authorized_keys"
    machinedPwd="*****"
   echo "step 1->setting private key"
     $keyGen 
     echo "step 2->chmod for public key"
        if [ ! -f "$HOME/.ssh/authorized_keys" ];then
          cat > $HOME/.ssh/authorized_keys
       fi
         cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
         $chmod
    echo "step 3->merge authorized_keys file"
          OLD_IFS="$IFS"
            IFS=","
            nodeHosts=($NODE_HOSTS)
            IFS="$OLD_IFS"
            
           for  node in ${nodeHosts[@]}
              do
          if [  "$node" != "$machine_name" ]; then
           expect -c "set timeout -1;
                spawn ssh-copy-id -i $HOME/.ssh/id_rsa.pub conversant@$node;
                expect {
                    *(yes/no)* {send -- yes\r;exp_continue;}
                    *assword:* {send -- $machinedPwd\r;exp_continue;}
                    eof        {exit 0;}
                }";
          fi
           done
}
相關文章
相關標籤/搜索