From 72f220b3f8a549daed6e0174fc2d403ae188c14d Mon Sep 17 00:00:00 2001 From: sanyitec Date: Fri, 12 Jun 2026 09:47:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20sudo-ssh.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sudo-ssh.sh | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/sudo-ssh.sh b/sudo-ssh.sh index 49c3e05..14abdda 100644 --- a/sudo-ssh.sh +++ b/sudo-ssh.sh @@ -1,7 +1,5 @@ #!/bin/bash -# 一键准备目标 Linux 设备的 SSH 和部署 sudo 权限。 - set -euo pipefail TARGET_USER=${TARGET_USER:-leador} @@ -156,14 +154,24 @@ ensure_sudo_access() { return fi - if [[ "$(id -un)" == "$TARGET_USER" ]] && command -v sudo >/dev/null 2>&1 && sudo -v; then + if [[ "$(id -un)" == "$TARGET_USER" ]] && command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; then + log_info "当前用户已有免密 sudo 权限" + return + fi + + if [[ "$(id -un)" == "$TARGET_USER" ]] && [[ -t 0 ]] && command -v sudo >/dev/null 2>&1 && sudo -v; then log_info "当前用户已有 sudo 权限" return fi bootstrap_sudo_with_su "$TARGET_USER" - if [[ "$(id -un)" == "$TARGET_USER" ]] && command -v sudo >/dev/null 2>&1 && sudo -v; then + if [[ "$(id -un)" == "$TARGET_USER" ]] && command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; then + log_info "sudo 权限已补齐" + return + fi + + if [[ "$(id -un)" == "$TARGET_USER" ]] && [[ -t 0 ]] && command -v sudo >/dev/null 2>&1 && sudo -v; then log_info "sudo 权限已补齐" return fi @@ -217,9 +225,18 @@ check_connectivity() { } install_ssh_server() { - need_cmd apt-get + if command -v sshd >/dev/null 2>&1; then + log_info "openssh-server 已存在,跳过安装" + return + fi + + if command -v dpkg >/dev/null 2>&1 && dpkg -s openssh-server >/dev/null 2>&1; then + log_info "openssh-server 已安装,跳过安装" + return + fi log_info "安装 openssh-server" + need_cmd apt-get run_root apt-get update run_root apt-get install -y openssh-server }