#!/usr/bin/env bash # ssh_connect_embedded.sh # 在脚本内直接写明密码(仅在你确认在安全内网且风险可接受时使用) # Usage: ./bigmengya.sh [user] [host] [port] # Example: ./bigmengya.sh alice 10.0.0.5 22 set -euo pipefail # ------------------------- # << 在这里修改密码等配置 >> # ------------------------- USER="root" # 可通过第一个参数覆盖 HOST="10.0.0.10" # 可通过第二个参数覆盖 PORT="22" # 可通过第三个参数覆盖 PASSWORD="tyh@19900420" # ------------------------- # 结束配置 # ------------------------- # 小安全缓解措施 umask 077 # 新创建文件仅对当前用户可读写 trap 'unset PASSWORD' EXIT INT TERM # 退出时尝试清除变量 # 可选:如果想在调用时强制使用脚本内的 USER/HOST 而不允许参数覆盖, # 请把上面 USER/HOST 赋值方式改为固定字面量。 # 检查 sshpass 是否存在 if ! command -v sshpass >/dev/null 2>&1; then echo "错误:找不到 sshpass。请安装后重试。例如 Debian/Ubuntu: sudo apt install sshpass" exit 2 fi # 连接(禁用第一次主机密钥交互以便脚本自动连接) # 如果你希望每次确认主机密钥,可以去掉 -o StrictHostKeyChecking=no # 添加以下选项: # -o PreferredAuthentications=password 强制使用密码认证 # -o PubkeyAuthentication=no 禁用公钥认证 # -o PasswordAuthentication=yes 启用密码认证 # -t 强制分配伪终端(解决curl|bash问题) sshpass -p "$PASSWORD" ssh -t \ -o StrictHostKeyChecking=no \ -o PreferredAuthentications=password \ -o PubkeyAuthentication=no \ -o PasswordAuthentication=yes \ -p "$PORT" "$USER@$HOST" # 在脚本尾尝试清理(再次) unset PASSWORD