对齐文件规范
This commit is contained in:
@@ -1,4 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
# 为 inventory 中 k3s 各节点配置 SSH 密钥(jack + root),供 Ansible 使用。
|
||||
#
|
||||
# 依赖:OpenSSH(ssh、ssh-keygen、scp);可选 sshpass(一次输入密码模式);可选 puttygen(仅当在交互中选择生成 .ppk 时)。
|
||||
# 默认 **不需要** PuTTY:在 Linux 工作机(如 ylc65)上用 ssh/ansible 即可。只有需要在 **Windows 上用 PuTTY/Pageant** 加载私钥时,
|
||||
# 才在提示「是否生成 PuTTY 私钥」时选 y,此时需安装 puttygen(Fedora: dnf install putty;Debian: apt install putty-tools)。
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
@@ -41,11 +46,11 @@ gen_key_if_missing() {
|
||||
ssh-keygen -t ed25519 -f "$key_path" -C "k3s-cluster" -N ""
|
||||
chmod 600 "$key_path" 2>/dev/null || true
|
||||
|
||||
# 如选择生成 PuTTY 私钥,则调用 puttygen;若命令不存在则给出安装提示并退出
|
||||
# 仅当用户在交互中明确选择生成 .ppk(Windows PuTTY)时调用 puttygen;Linux 默认不生成
|
||||
if [[ "${GENERATE_PUTTY_PPK:-n}" == "y" ]]; then
|
||||
if ! command -v puttygen >/dev/null 2>&1; then
|
||||
echo "[ERR] 已选择生成 PuTTY 私钥,但当前系统未安装 puttygen。" >&2
|
||||
echo " 请先安装 puttygen 后重新运行本脚本,或在提示时选择不生成 PuTTY 私钥。" >&2
|
||||
echo "[ERR] 已选择生成 PuTTY 私钥(.ppk),但当前系统未安装 puttygen。" >&2
|
||||
echo " 请先安装 putty-tools/putty 包后重试,或在提示时选「不生成」PuTTY 私钥(OpenSSH 默认已够用)。" >&2
|
||||
echo "" >&2
|
||||
echo " 常见系统安装示例:" >&2
|
||||
echo " Fedora / CentOS / RHEL : sudo dnf install putty 或 sudo dnf install putty-tools" >&2
|
||||
@@ -121,7 +126,6 @@ copy_key_to_host() {
|
||||
print_title "K3s 节点 SSH 密钥批量配置(控制节点 + 工作节点,每节点一把密钥)"
|
||||
|
||||
ensure_cmd ssh-keygen
|
||||
ensure_cmd ssh-copy-id
|
||||
ensure_cmd ssh
|
||||
|
||||
# 默认显示相对路径(相对于仓库根)
|
||||
@@ -130,7 +134,7 @@ INVENTORY_PATH="$(ask_default "Ansible inventory 路径(相对仓库根 ${ROOT
|
||||
[[ "$INVENTORY_PATH" != /* ]] && INVENTORY_PATH="${ROOT_DIR}/${INVENTORY_PATH}"
|
||||
[[ ! -f "$INVENTORY_PATH" ]] && { echo "[ERR] 找不到 inventory: $INVENTORY_PATH" >&2; exit 1; }
|
||||
|
||||
# 交互输入:用户名(有默认值)、密码(可选,用于后续 SSH/sudo)、是否生成 PuTTY 私钥
|
||||
# 交互输入:用户名(有默认值)、密码(可选,用于后续 SSH/sudo)、是否额外生成 PuTTY .ppk(可选,默认否)
|
||||
echo ""
|
||||
echo "--- 交互输入用户名与密码 ---"
|
||||
SSH_USER="$(ask_default "SSH 登录用户名(直接回车使用默认 jack)" "$SSH_USER_DEFAULT")"
|
||||
@@ -174,8 +178,8 @@ if [[ -n "${JACK_PASS:-}" ]]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# 是否同时为每把新生成的 OpenSSH 密钥生成一份 PuTTY 私钥(.ppk)
|
||||
GENERATE_PUTTY_PPK="$(ask_default "是否为新密钥同时生成 PuTTY 私钥(.ppk)?(y/N)" "N")"
|
||||
# 是否同时为每把新生成的 OpenSSH 密钥生成一份 PuTTY 私钥(.ppk);Linux/默认回车即可
|
||||
GENERATE_PUTTY_PPK="$(ask_default "是否额外生成 PuTTY 私钥(.ppk,仅 Windows PuTTY 需要;Linux 用 OpenSSH 请选 N)[y/N]" "N")"
|
||||
GENERATE_PUTTY_PPK="${GENERATE_PUTTY_PPK,,}" # 转小写
|
||||
if [[ "$GENERATE_PUTTY_PPK" == "y" ]]; then
|
||||
GENERATE_PUTTY_PPK="y"
|
||||
|
||||
Reference in New Issue
Block a user