ssh實現批量免密登入

2021-10-02 01:41:52 字數 1499 閱讀 3324

使用場景

比如我們在使用ansible批量部署大量伺服器的時候,如果一台一台的伺服器去分發金鑰會很麻煩 所以用指令碼實現批量部署免密登入就很現實了。下面的**親測成功

但是有乙個缺點,缺點就是伺服器的密碼都是一致的,如果不是一致的,是不成功的。

這裡用到了乙個軟體expect,expect是乙個自動化互動套件,主要應用於執行命令和程式時,系統以互動形式要求輸入指定字串,實現互動通訊。

expect 自動互動流程:

spawn啟動指定程序–expect獲取指定關鍵字–send指定程式傳送指定字元 --執行完退出。

expect常用命令總結:

spawn               互動程式開始後面跟命令或者指定程式

expect 獲取匹配資訊匹配成功則執行expect後面的程式動作

send exp_send 用於傳送指定的字串資訊

exp_continue 在expect中多次匹配就需要用到

send_user 用來列印輸出 相當於shell中的echo

exit 退出expect指令碼

eof expect執行結束 退出

set 定義變數

puts 輸出變數

settimeout 設定超時時間

ssh部署免密登入的具體指令碼

#!/bin/bash

rpm -q expectif[

$? -eq 0 ]

;then

echo

"已安裝"

else

yum -y install

expectif[

$? -eq 0 ]

;then

echo

"安裝成功"

else

echo

"安裝失敗"

fifi

#本機是否有ssh金鑰 沒有則生成if[

! -f ~/.ssh/id_rsa ]

;then

echo

"請按3次enter健"

ssh-keygen -t rsa

fissh_expect(

) "password:"

eof

}";}[ -f hosts.txt ]

&&rm -rf hosts.txt

#定義 hosts.txt

cat> hosts.txt <<

eof 10.0.0.42

10.0.0.43

eofpasswd=123456

for ip in

`cat hosts.txt|

awk''`do

ssh_expect $

$done

ssh實現免密登入

假設現在有兩台主機a和b,其中主機b有乙個使用者名叫caixiong,ip是22.33.44.55,現在想要實現ssh免密從主機a登入到主機b的caixiong使用者,只需要下面三步操作就可以完成。第一步 在主機a上生成公 私鑰對。如果之前已經生成過了金鑰對則跳過此步 ssh keygen t rs...

實現ssh免密登入

設定ssh無密碼登入可以提高我們主機的安全性。ssh 無密碼登入要使用公鑰與私鑰。linux下可以用ssh keygen生成公鑰 私鑰對,接下來以centos為例。例圖 實驗主機a無金鑰訪問主機b 實戰部分 主機cent65 192.168.1.65 主機cent67 192.168.1.67 現想...

SSH實現免密登入

目的 在server1上免密登入server2 1.在server1上執行命令 ssh keygen t rsa p 生成公鑰和私鑰,預設路徑為 root ssh 2.將 id rsa.pub檔案拷貝到遠端伺服器server2,然後執行命令 cat id rsa.pub root ssh autho...