48 lines
1.8 KiB
Bash
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="47.76.191.104" # 可通过第二个参数覆盖
|
|
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 |