ssh登入自動填充密碼

2021-09-14 08:06:08 字數 1495 閱讀 3626

要通過乙個跳板機ssh登入其他主機,每次使用ssh hostip -l username再輸入密碼的方式太耗時,想要進行密碼自動填充

使用expect+bash shell

ssshhost.sh指令碼中封裝expect的ssh登入自動填充密碼功能

主要**:

expect部分:

function auto_login_ssh()

}interact

"return $?

}

bash shell部分:

declare -a hostinfodict

hostinfodict=(

["127"]="127.0.0.1 username passwd"

)echo $#

if [ $# -ne 1 ]; then

echo "the args are problematic need hostipnickname"

exit 1

fisshhostip=$1

echo $sshhostip

# echo $

old_ifs="$ifs"

ifs=" "

path_info_arr=($)

ifs="$old_ifs"

hostip=$

hostuser=$

hostpasswd=$

auto_login_ssh $hostpasswd $hostuser"@"$hostip

其中:

執行指令碼:

ssshhost.sh 127

1、ssh的使用者名稱、密碼為明文,很容易洩露

2、只要通過前台登入上堡壘機,都能執行該指令碼登入相關主機

3、如果設定timeout = -1永不過期,若ssh連線介面沒有使用ctrl+d,而是直接關閉介面的話,該指令碼不會退出,一直停留在後台

4、ssh登入到別的主機之後,存在中文亂碼現象。

相關解決方案思考:

1、 將shell指令碼加密,或者使用編譯後的c來呼叫該指令碼

2、沒有好方法,如果要進行密碼校驗的話,失去了指令碼的基本功能-_-!

3、根據場景設定了3600s強制下線,這個可以新增乙個指令碼對當前類似於僵死程序kill

4、在跳板機增加lang=zh_cn.gbk,預設以gbk登入

容我再想想……

參考文章

shell expect的簡單用法

shell陣列和字典

ssh自動登入

1.進入 目錄 ssh cd ssh 2.生成 key ssh keygen t rsa 這是會在目錄下產生 id rsa id rsa.pub 這兩個檔案 3.將 密碼檔案 id rsa.pub 上傳到 ssh 的伺服器 上 ssh copy id i ssh id rsa.pub 使用者名稱 i...

利用expect實現SSH登入密碼的自動填充

ssh可以遠端登入另一台主機 基本使用口令如下 1.ssh user host address 如 ssh ysaicll 192.168.0.1 以ysaicll身份登入主機192.168.0.1 2.ssh host address 如 ssh 192.168.0.1 直接登入主機192.168...

ssh 免密碼登入

ssh 無密碼登入要使用公鑰與私鑰。linux下可以用用ssh keygen生成公鑰 私鑰對,下面我以centos為例。有機器a 192.168.1.155 b 192.168.1.181 現想a通過ssh免密碼登入到b。1.在a機下生成公鑰 私鑰對。chenlb a ssh keygen t rs...