From a07b87c6981e47755821d43671e7e69adb23e4d4 Mon Sep 17 00:00:00 2001 From: wukongdaily <2666180@gmail.com> Date: Wed, 24 Dec 2025 11:33:22 +0800 Subject: [PATCH] update 04 --- push-sshkey-to-fnos.sh | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/push-sshkey-to-fnos.sh b/push-sshkey-to-fnos.sh index badbc74..c11215b 100644 --- a/push-sshkey-to-fnos.sh +++ b/push-sshkey-to-fnos.sh @@ -31,16 +31,23 @@ else echo "已存在 SSH 密钥,跳过生成" fi -# ===== 阶段二:推送公钥到飞牛 NAS ===== +# ===== 阶段二:检测远程是否能免密,首次登录提示手动输入密码 ===== echo "== [2/2] 推送公钥到飞牛 NAS ==" -echo "⚠️ 如果是首次登录,可能需要输入飞牛用户密码并确认 host key" +# 尝试用公钥免密登录 +ssh -o BatchMode=yes "$USER_NAME@$NAS_IP" "echo '免密测试成功'" >/dev/null 2>&1 +if [ $? -ne 0 ]; then + echo "⚠️ 检测到首次登录,需手动输入密码并确认 host key" + echo "请在提示时输入密码,完成一次手动登录,然后再运行脚本即可实现免密" + echo "你可以先运行: ssh $USER_NAME@$NAS_IP" + exit 1 +fi -# 检测远程 HOME 并创建 ~/.ssh(第一次会要求密码) -ssh -t "$USER_NAME@$NAS_IP" << 'EOF' +# 远程操作:创建 .ssh 目录及权限 +ssh "$USER_NAME@$NAS_IP" << 'EOF' set -e -# 使用远程真实 HOME(飞牛可能不是 /home/username) +# 使用远程真实 HOME HOME_DIR="$HOME" SSH_DIR="$HOME_DIR/.ssh" AUTH_KEYS="$SSH_DIR/authorized_keys" @@ -48,12 +55,11 @@ AUTH_KEYS="$SSH_DIR/authorized_keys" mkdir -p "$SSH_DIR" chmod 700 "$SSH_DIR" -# 确保 authorized_keys 文件存在 touch "$AUTH_KEYS" chmod 600 "$AUTH_KEYS" EOF -# 写入公钥到远程 authorized_keys +# 推送公钥到远程 authorized_keys cat "$PUB_KEY" | ssh "$USER_NAME@$NAS_IP" "cat >> ~/.ssh/authorized_keys" echo "✅ SSH 公钥已成功推送:$USER_NAME@$NAS_IP"