Files
linux-bash/ssh/redmi.sh
2026-02-17 17:28:37 +08:00

48 lines
1.8 KiB
Bash

#!/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