一、脚本代码
#!/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 "清理完成"