要通過乙個跳板機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...