Files
fnshell/push-sshkey-to-fnos.sh
2025-12-24 10:58:32 +08:00

67 lines
1.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
set -e
# ===== 参数 =====
USER_NAME="$1"
NAS_IP="$2"
KEY_DIR="/root/.ssh"
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>"
exit 1
fi
# ===== 阶段一:在 OpenWrt 上生成 SSH 密钥 =====
echo "== [1/2] 检查并生成 SSH 密钥 =="
if [ ! -d "$KEY_DIR" ]; then
mkdir -p "$KEY_DIR"
chmod 700 "$KEY_DIR"
fi
if [ ! -f "$PRIV_KEY" ]; then
echo "未发现 SSH 密钥开始生成ed25519..."
ssh-keygen -t ed25519 -f "$PRIV_KEY" -N ""
else
echo "已存在 SSH 密钥,跳过生成"
fi
# ===== 阶段二:推送公钥到飞牛 NAS =====
echo "== [2/2] 推送公钥到飞牛 NAS =="
ssh "$USER_NAME@$NAS_IP" "
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
# 创建 .ssh 目录
sudo mkdir -p \"$TARGET_SSH_DIR\"
sudo chown $USER_NAME:$USER_NAME \"$TARGET_SSH_DIR\"
sudo chmod 700 \"$TARGET_SSH_DIR\"
# 准备 authorized_keys
sudo touch \"$TARGET_AUTH_KEYS\"
sudo chown $USER_NAME:$USER_NAME \"$TARGET_AUTH_KEYS\"
sudo chmod 600 \"$TARGET_AUTH_KEYS\"
"
# 写入公钥
cat "$PUB_KEY" | ssh "$USER_NAME@$NAS_IP" \
"cat >> $TARGET_AUTH_KEYS"
echo "✅ SSH 免密登录配置完成:$USER_NAME@$NAS_IP"