一、腳本代碼
#!/bin/bash
#提示用戶輸入用戶i名和ip地址
read -p "請輸入遠程服務器的用戶名: " hname
read -p "請輸入遠程服務器的IP地址: " fip
read -p "請輸入遠程服務器的遠程端口:" sdk
#檢查是否配置了免密登錄
function sfmm(){
? ? ? ? #-o PasswordAuthentication=no表示禁用密碼認證;-o BatchMode=yes用于啟用批處理模式
? ? ? ? ssh -o PasswordAuthentication=no -o BatchMode=yes -p $sdk $hname@$fip echo "SSH免密登錄已配置"
? ? ? ? return $?
}
#配置免密登錄
function mmdl(){
? ? ? ? echo "正在配置免密登錄......"
? ? ? ? #用if檢查本機服務器是否有SSH密鑰對,如果沒有則生成密鑰對
? ? ? ? #這條命令用于檢查文件是否存在;-f用于檢查文件是否為普通文件;~表示當前用戶的主目錄;~/.ssh/id_rsa.pub是SSH公鑰文件的默認路徑,用于檢查文件路徑
? ? ? ? if [ ! -f ~/.ssh/id_rsa.pub ]
? ? ? ? then
? ? ? ? ? ? ? ? echo "未找到SSH密鑰對,正則生成中......"
? ? ? ? #這條命令用于生成密鑰對,ssh-keygen:這是用于生成、管理和轉換SSH密鑰的工具;-t rsa:指定生成的密鑰類型為RSA;-b 4096:指定密鑰的位數為4096,默認密鑰位數為2048位,位數越高越安全
? ? ? ? ? ? ? ? ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
? ? ? ? fi
? ? ? ? echo "將公鑰復制到遠程服務器....."
? ? ? ? ssh-copy-id -p $sdk $hname@$fip
? ? ? ? #通過檢驗sfmm函數的輸出值驗證免密登錄是否成功
? ? ? ? if sfmm
? ? ? ? then
? ? ? ? ? ? ? ? echo "SSH免密登錄配置成功"
? ? ? ? else
? ? ? ? ? ? ? ? echo "SSH免密登錄配置失敗"
? ? ? ? ? ? ? ? exit 1
? ? ? ? fi
}
#檢查是否需要配置免密登錄
if ! sfmm
then
? ? ? ? mmdl
fi
#登錄遠程服務器
echo "正在登錄到遠程服務器....."
sleep 3s
ssh -p $sdk $hname@$fip
#登出遠程服務器
sleep 2s
echo "已從遠程服務器登出"
echo "正在清理臨時文件...."
rm -rf /tmp/temp_file
sleep 2s
echo "清理完成"