diff --git a/push-sshkey-to-fnos.sh b/push-sshkey-to-fnos.sh index 8b0c279..2a9a267 100644 --- a/push-sshkey-to-fnos.sh +++ b/push-sshkey-to-fnos.sh @@ -10,10 +10,6 @@ KEY_NAME="id_dropbear" PRIV_KEY="$KEY_DIR/$KEY_NAME" PUB_KEY="$KEY_DIR/$KEY_NAME.pub" -TARGET_HOME="/home/$USER_NAME" -TARGET_SSH_DIR="$TARGET_HOME/.ssh" -TARGET_AUTH_KEYS="$TARGET_SSH_DIR/authorized_keys" - # ===== 参数检查 ===== if [ -z "$USER_NAME" ] || [ -z "$NAS_IP" ]; then echo "用法: $0 <飞牛用户名> <飞牛IP>" @@ -38,29 +34,25 @@ fi # ===== 阶段二:推送公钥到飞牛 NAS ===== echo "== [2/2] 推送公钥到飞牛 NAS ==" -ssh "$USER_NAME@$NAS_IP" " +# 第一次连接:创建 ~/.ssh 并设置权限(不使用 sudo,不假设 /home) +ssh "$USER_NAME@$NAS_IP" << 'EOF' set -e -# 确保 /home/用户名 存在(飞牛首次安装时需要) -if [ ! -d \"$TARGET_HOME\" ]; then - sudo mkdir -p \"$TARGET_HOME\" - sudo chown $USER_NAME:$USER_NAME \"$TARGET_HOME\" - sudo chmod 755 \"$TARGET_HOME\" -fi +# 使用真实 HOME +HOME_DIR="$HOME" +SSH_DIR="$HOME_DIR/.ssh" +AUTH_KEYS="$SSH_DIR/authorized_keys" -# 创建 .ssh 目录 -sudo mkdir -p \"$TARGET_SSH_DIR\" -sudo chown $USER_NAME:$USER_NAME \"$TARGET_SSH_DIR\" -sudo chmod 700 \"$TARGET_SSH_DIR\" +mkdir -p "$SSH_DIR" +chmod 700 "$SSH_DIR" -# 准备 authorized_keys -sudo touch \"$TARGET_AUTH_KEYS\" -sudo chown $USER_NAME:$USER_NAME \"$TARGET_AUTH_KEYS\" -sudo chmod 600 \"$TARGET_AUTH_KEYS\" -" +touch "$AUTH_KEYS" +chmod 600 "$AUTH_KEYS" +EOF -# 写入公钥 +# 写入公钥(真正推 key 的关键一步) cat "$PUB_KEY" | ssh "$USER_NAME@$NAS_IP" \ -"cat >> $TARGET_AUTH_KEYS" +"cat >> ~/.ssh/authorized_keys" -echo "✅ SSH 免密登录配置完成:$USER_NAME@$NAS_IP" +echo "✅ SSH 公钥已成功推送:$USER_NAME@$NAS_IP" +echo "ℹ️ 以后可直接免密登录(ssh $USER_NAME@$NAS_IP)"