疯狂の猿猴 - linux学习记录
type: channel
link: https://www.592850.com/category/linux%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95/
description: 本分类专注于记录学习Linux系统的点滴。涵盖了Linux基础操作、命令行使用技巧、系统管理与优化、服务器部署等内容。无论是初学者还是有经验的用户，都可以在这里找到实用的经验分享和问题解决方案，帮助更高效地掌握Linux系统。
items: 【全网首发】极限低成本吃满阿里云 CDT 200G 高速流量：Alpine 作为救援系统，一键重装 Debian（修复 GRUB / 清理 isohybrid 残留全流程）
items: 使用阿里云CDT 享受每月200G/4元高速流量
items: 转发脚本记录
items: PVE虚拟机模版脚本
items: linux系统自定义动态登录页
items: PVE8清除PVE8的登陆弹窗提示
items: 教你Debian12如何安装Docker环境
items: 教你Debian12如何开机自动启动脚本
items: 教你Debian12如何使用ROOT用户登录
items: 教你Debian12如何开启SSH

【全网首发】极限低成本吃满阿里云 CDT 200G 高速流量：Alpine 作为救援系统，一键重装 Debian（修复 GRUB / 清理 isohybrid 残留全流程）
type: item
date: 2026-01-28T11:06:01+08:00
description: 更新（2026.01.10）： 重要提示：从自制镜像中读取到的 alpine virt iso 救援系统，在 VNC 执行 setup-alpine，将正式系统写入到硬盘后，该临时系统还运行在内存中，必须要重启！必须要重启！必须要重启！重启后进入到的 alpine 系统，才是从系统硬盘中读取的正式系统，才可以进行设置 DNS、配置源、清除硬盘标签、执行脚本重装等后续工作。 更新（2026.01.06）： 援引源网站证书于 2026 年 1 月 4 日失效，且网站开启了 HSTS，无法为此网站添加例外以访问，web archive 里也没有存档，我保存了一份在本地，看来得补档了。 已补档至本站。 援引 & 致谢： 使用阿里云CDT 享受每月200G/4元高速流量 如果以上链接无法打开，请访问本站补档： 【补档】使用阿里云CDT 享受每月200G/4元高速流量 补正：援引文章“五. 安装系统” → 过程 → 一：安装”中的“这样配置好用户名和密码及时区，代理跳过”文字下方的流程演示有一个坑，需要我们手动回避，在选择 APK Mirror 的时候，一定要摁“(s) Show mirror list”，然后按空格翻页，找到阿里云（aliyun）镜像源所属的序号，再做选择，如果只按原文图示直接按“49”，有可能会连接到一个速度极慢的源，因为这个镜像列表是实时更新的，截止我做测试时，阿里云的镜像源序号是“44”，这个序号未来还会根据该列表的更新而随时变化，切勿刻舟求剑。本篇教程的目的，是我们用自制镜像，启动阿里云极低配置的抢占式实例后，需要在新安装的系统内，清除掉手动安装 Alpine Linux virt 版后，其为了兼容性而在硬盘上，打了 gpt 分区、iso 镜像的标签，进而导致我们手动修复 grub 受阻，使重装系统脚本失效，为什么不用阿里云自带的重装功能，非要自己挂载镜像安装？ 援引文章里说了，官方镜像的使用条件，最低要求 20GB 硬盘才能灌入系统，即使是社区镜像，最低也要 16 GB 硬盘，硬盘容量越低，使用费用越低，16 GB 还是太大，缩减到 10 GB，甚至是 5 GB，并且能用脚本自由重装系统，才是我们的目标。教程成果 check list： wipefs -n /dev/vda 仅剩 dos 执行 grub-install /dev/vda 无报错 存在 /boot/grub/grub.cfg 重启出现 grub 菜单，并能被引导进入系统 声明：本教程案例系统盘为“vda”及“/dev/vda”，强烈建议先确认系统盘设备名。lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE 若系统盘不是 /dev/vda（如 /dev/sda 或 /dev/nvme0n1），则以下所有命令中的 vda 需替换，后续 dd 命令执行的是破坏性写入操作，操作前请务必确认好扇区起始位置、目标硬盘、扇区计数等参数，由于个人失误造成的操作系统无法重启、数据损坏等后果自负，切勿盲目照抄。由于修改的主要是磁盘头部扇区数据，所以理论上低于 10 GB 以下的硬盘也可以按本 SOP 指示完成操作。安装好 alpine 并重启后的操作： 更新源 apk update 安装编辑器 apk add vim 启用更多源 开启社区源。vim /etc/apk/repositories 将 #http://mirrors.aliyun.com/alpine/v3.23/community 注释去掉（把“http”前面的井字符号删除即可）。 安装其它必要组件 apk add bash curl util-linux parted e2fsprogs 使用 wipefs 查看磁盘标签，如若类似于以下结果： wipefs -n /dev/vda DEVICE OFFSET TYPE UUID LABEL vda 0x8001 iso9660 2025-12-17-07-03-17-00 alpine-virt 3.23.2 x86_64 vda 0x1fe dos vda 0x200 gpt 说明 gpt 分区表、iso 标签的存在，会影响到后续 grub 的配置与引导，需要清除： 确认 /boot 分区正在被挂载在本机硬盘 vda 上 mount | grep -E '/boot|vda' || true /dev/vda3 on / type ext4 (rw,relatime) /dev/vda1 on /boot type ext4 (rw,relatime) 如果第 6 步确认为是（非空），卸载 /boot 分区，以免被干扰 umount /boot 确认 vda1 的起始位置（可选） parted -s /dev/vda …

使用阿里云CDT 享受每月200G/4元高速流量
type: item
date: 2026-01-28T11:04:48+08:00
description: 更新（2026.01.10）： 重要提示：从自制镜像中读取到的 alpine virt iso 救援系统，在 VNC 执行 setup-alpine，将正式系统写入到硬盘后，该临时系统还运行在内存中，必须要重启！必须要重启！必须要重启！重启后进入到的 alpine 系统，才是从系统硬盘中读取的正式系统，才可以进行设置 DNS、配置源、清除硬盘标签、执行脚本重装等后续工作。 援引 & 致谢： 使用阿里云CDT 享受每月200G/4元高速流量 后续高阶玩法，支持用脚本重装，请移步： 【全网首发】极限低成本吃满阿里云 CDT 200G 高速流量：Alpine 作为救援系统，一键重装 Debian（修复 GRUB / 清理 isohybrid 残留全流程） 援引源网站证书于 2026 年 1 月 4 日失效，且网站开启了 HSTS，无法为此网站添加例外以访问，web archive 里也没有存档，我保存了一份在本地，本帖对该篇教程的过时内容和不完善内容进行一些修订，该教程同样适合阿里云国际站。原理：阿里云香港最近表现不错，但新手轻量优惠不可选择香港，只能正价购买香港轻量，持有成本较高，所以我们可以利用阿里云（含阿里云国际版）每个账号免费赠送的 200 GB CDT（云数据传输）流量，配合配置最低的 ECS 实例，达到低成本搭乘阿里云香港网络快线的方法。CDT公网流量免费额度提升至220 GB/月 产品： CDT 公网流量 免费额度与适用地域： 免费额度为 220 GB/月，其中： 中国内地地域：20 GB/月 非中国内地地域：200 GB/月 线路类型： BGP（多线） 正文：本文将介绍如何开启 CDT + 创建阿里云抢占式实例 + 保活，实现月付最低 4 元，享受 200G 单向出网高速流量的方法。零、开通阿里云 CDT 功能在控制台首页搜索框，直接输入“CDT”，自动弹出“控制台 > 云数据传输”选项，点击；或直接访问：https://cdt.console.aliyun.com/overview （阿里云国际站：https://cdt.console.alibabacloud.com/overview ），进入 CDT 工作台。确认当前账户下的所有 CDT 子功能，如图示开通，如果还没有开通，选择未开通子项，点击“一键升级”：一、开通阿里云 OSS 并上传 alpine 镜像 搜索栏搜索 oss 并开通： 上传镜像至 oss 2.1 点击管理控制台，创建 bucket，地域切记选择香港：2.2 创建成功后，进入 bucket，上传所需 apline 镜像：https://dl-cdn.alpinelinux.org/alpine/v3.23/releases/x86_64/alpine-virt-3.23.2-x86_64.iso 点击上传文件，上传刚刚下载好的 alpine 镜像:2.3 保存上传好的镜像链接，下一步要用：二、创建系统镜像 导入镜像： 点击 https://ecs.console.aliyun.com/image/region/cn-hongkong （阿里云国际站：https://ecs.console.alibabacloud.com/image/region/cn-hongkong ），导入刚刚上传到 oss 的 alpine 镜像：点击下一步：“镜像检测 → 导入后执行检测”最好不勾：“云盘配置 → 配置云盘属性”勾选，alpine virt ISO 镜像体积很小，虽然原文里给 1GB 空间启动足够，但保险起见，还是建议给 2GB 以上，除非你执意只给 ECS 配置 1GB 的硬盘，但安装许多系统会受限制（系统本体、应用、日志等）。后面创建机器时可选的硬盘容量，必须等于或大于导入镜像步骤设置的云盘容量。耐心等待创建完成：三、创建抢占式实例在 https://ecs.console.aliyun.com/server/region/cn-hongkong#/ （阿里云国际站：https://ecs.console.alibabacloud.com/server/region/cn-hongkong#/ ）创建抢占式实例：规格搜索：ecs.e-c4m1.large 选中该“经济型”： 实例使用时长：无确定使用时长（否则按默认只设置 1 小时，1 小时后被删机）； 单台实例上限价格：使用自动出价，香港不同的区价格不一样，而且随资源变化随时浮动，图示价格仅供参考； 实例中断模式：节省停机（必须选这个，否则还是被删机）； 区域香港 B、C、D 区任意，首次创建时，会自动配置好对应地区的 VPC，不需要手动配置； 镜像选我们刚才创建的自定义的 alpine； 系统盘容量看自己选择，ESSD Entry 单 GB 价…

转发脚本记录
type: item
date: 2025-05-15T13:28:04+08:00
description: 转发脚本记录#!/bin/bash # 更新系统并安装依赖 sudo apt update sudo apt install -y iptables iptables-persistent # 开启内核转发 echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p # 加载连接追踪模块 sudo modprobe nf_conntrack # 配置全端口转发（TCP/UDP） sudo iptables -t nat -A PREROUTING -p tcp -j DNAT --to-destination 专线入口地址 sudo iptables -t nat -A PREROUTING -p udp -j DNAT --to-destination 专线入口地址 # 转发ICMP请求 sudo iptables -t nat -A PREROUTING -p icmp --icmp-type any -j DNAT --to-destination 专线入口地址 # 允许转发到目标IP的所有流量 sudo iptables -A FORWARD -d 专线入口地址 -j ACCEPT # 配置MASQUERADE（源地址伪装） sudo iptables -t nat -A POSTROUTING -p tcp -d 专线入口地址 -j MASQUERADE sudo iptables -t nat -A POSTROUTING -p udp -d 专线入口地址 -j MASQUERADE sudo iptables -t nat -A POSTROUTING -p icmp -d 专线入口地址 -j MASQUERADE # 抗DDoS防护（限制SYN和ICMP） sudo iptables -A FORWARD -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT sudo iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # 提升UDP连接数限制 echo "net.netfilter.nf_conntrack_max=655360" | sudo tee -a /etc/sysctl.conf sudo sysctl -p # 保存规则 sudo iptables-save | sudo tee /etc/iptables/rules.v4 echo "配置完成！"

PVE虚拟机模版脚本
type: item
date: 2025-04-30T20:23:15+08:00
description: 前言之前在github上找来的，本来挺好用的，但是后来github的作者修改了脚本，搞的有些不好用，可能是没有修复BUG什么的，反正之前下的脚本我就暂存一份在自己博客，免得以后丢了！顺便说下，我也不知道是哪个作者了！用法复制以下代码，保存为templates.sh即可，拉到PVE根目录，给与执行权限，然后./templates.sh就可以操作了，爱选哪个选哪个！还有几个脚本是一次性全部下载，我也放上去！交互式的脚本如下#!/bin/bash # 函数：提示用户输入网络接口和存储 prompt_for_network_and_storage() { echo -n "请输入网络接口（例如 vmbr0，默认为 vmbr0）：" read -r vmbr if [ -z "$vmbr" ]; then vmbr="vmbr0" fi echo -n "请输入存储名称（例如 local，默认为 local）：" read -r storage if [ -z "$storage" ]; then storage="local" fi } # 函数：显示发行版选项菜单（仅在交互模式下使用） show_distro_menu() { echo "=====================================" echo "欢迎使用 Proxmox VE 虚拟机模板创建脚本" echo "=====================================" echo "请选择要创建的发行版：" echo "1. Debian 12" echo "2. Debian 11" echo "3. CentOS 9 Stream" echo "4. CentOS 8 Stream" echo "5. Ubuntu 22.04" echo "6. Ubuntu 24.04" echo "7. AlmaLinux 8" echo "8. AlmaLinux 9" echo "9. Rocky Linux 8" echo "10. Rocky Linux 9" echo -n "请输入选项 (1-10)：" read -r choice case $choice in 1) distro="debian12" image_url="https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2" image_file="debian-12-generic-amd64.qcow2" vm_name="Debian-12" ;; 2) distro="debian11" image_url="https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2" image_file="debian-11-generic-amd64.qcow2" vm_name="Debian-11" ;; 3) distro="centos9" image_url="https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-GenericCloud-9-latest.x86_64.qcow2" image_file="CentOS-Stream-GenericCloud-9-latest.x86_64.qcow2" vm_name="CentOS-9" ;; 4) distro="centos8" image_url="https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-latest.x86_64.qcow2" image_file="CentOS-Stream-GenericCloud-8-latest.x86_64.qcow2" vm_name="CentOS-8" ;; 5) distro="ubuntu22" image_url="https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img" image_file="jammy-server-cloudimg-amd64.img" vm_name="Ubuntu-22" ;; 6) distro="ubuntu24" image_url="https://cloud-images.ubuntu.com/nobl…

linux系统自定义动态登录页
type: item
date: 2025-04-19T13:48:00+08:00
description: 平台操作系统：debian11 其他方法系统，方法类似先更新软件源并安装必要依赖sudo apt-get update sudo apt-get install -y figlet ruby rubygems sudo gem install lolcat sudo apt-get install -y cron代码内容sudo tee /usr/local/bin/update_xuanyuan_motd <<'EOF' #!/bin/bash { echo -e "\033[1;36m" figlet -f slant "CLOUD" | /usr/local/bin/lolcat echo -e "\033[0m" echo "==============================================" printf "%-12s %s\n" "主机IP:" "$(hostname -I | cut -d' ' -f1)" printf "%-12s %s\n" "系统版本:" "$(lsb_release -sd)" printf "%-12s %s\n" "运行时间:" "$(uptime -p | sed 's/up //')" printf "%-12s %s\n" "当前负载:" "$(cat /proc/loadavg | cut -d' ' -f1-3)" echo "==============================================" date +"生成时间: %Y-%m-%d %H:%M:%S" } > /etc/motd EOF设置权限并测试运行sudo chmod +x /usr/local/bin/update_xuanyuan_motd sudo /usr/local/bin/update_xuanyuan_motd创建每小时更新的cron任务sudo tee /etc/cron.d/update_motd <<EOF 0 * * * * root /usr/local/bin/update_xuanyuan_motd EOF重启cron服务sudo systemctl restart cron最终效果验证命令：查看当前MOTDcat /etc/motd查看定时任务状态systemctl status cron查看最近一次执行日志grep update_xuanyuan /var/log/syslog

PVE8清除PVE8的登陆弹窗提示
type: item
date: 2024-12-11T19:03:58+08:00
description: 前言我的PVE版本是8.3.0第一步：备份原文件进入修改文件的目录cd /usr/share/javascript/proxmox-widget-toolkit备份原文件，一定要记得备份哈！要不就惨了cp proxmoxlib.js proxmoxlib.js.bak第二步，修改proxmoxlib.js文件可以用nano、vim、vi，总之随便一种文本编辑器就行vi proxmoxlib.js第三步，查找包含orig_cmd的这句话找到如下现实的这行checked_command: function(orig_cmd) {第四步，在后面加上orig_cmd();和return;即可，如下checked_command: function(orig_cmd) { orig_cmd(); #<-----这里是第一个加的地方 return; #<-----这里是第二个加的地方，后面的不要动 Proxmox.Utils.API2Request( { url: '/nodes/localhost/subscription', method: 'GET', failure: function(response, opts) {最后，重启PVE代理服务systemctl restart pveproxy.service

教你Debian12如何安装Docker环境
type: item
date: 2024-12-11T14:35:46+08:00
description: 在 Debian 12 上安装 DockerDocker 是一个开源的应用容器引擎，它使得开发者可以打包应用及其依赖到一个轻量级、可移植的容器中，并可以在任何地方运行。在这篇文章中，我将指导大家如何在 Debian 12 系统上安装 Docker。前提条件操作系统：本教程适用于 Debian 12（Bookworm）及以上版本。管理员权限：需要具有 sudo 权限来执行一些安装命令。步骤一：更新系统软件包首先，确保你的 Debian 12 系统是最新的。在安装 Docker 之前，建议更新所有的系统包，以确保软件包的安全性和稳定性。sudo apt update sudo apt upgrade -y步骤二：安装 Docker 安装的依赖包Docker 需要一些基础的依赖包，运行以下命令来安装这些包：sudo apt install apt-transport-https ca-certificates curl software-properties-common -y步骤三：添加 Docker 官方 GPG 密钥接下来，添加 Docker 官方的 GPG 密钥，以便我们可以安全地安装 Docker 的软件包。curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg步骤四：添加 Docker 官方仓库添加 Docker 的官方 APT 仓库到系统的软件源列表中：echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null步骤五：更新软件包索引添加 Docker 仓库后，刷新本地的软件包索引：sudo apt update步骤六：安装 Docker现在，可以安装 Docker 引擎了。运行以下命令来安装 Docker 相关的包：sudo apt install docker-ce docker-ce-cli containerd.io -y步骤七：启动 Docker 服务安装完成后，我们需要启动 Docker 服务，并将其设置为开机自启。运行以下命令：sudo systemctl start docker sudo systemctl enable docker步骤八：验证 Docker 是否成功安装你可以通过运行以下命令来验证 Docker 是否安装成功：sudo docker --version sudo docker run hello-world如果 Docker 安装成功，你会看到类似以下的输出：Docker version 20.10.24, build 1f3f9c5 Hello from Docker! This message shows that your installation appears to be working correctly.步骤九：（可选）配置 Docker 无需 sudo 权限如果你希望在执行 Docker 命令时无需每次加 sudo，你可以将当前用户添加到 Docker 组：sudo usermod -aG docker $USER执行上述命令后，你需要退出当前会话并重新登录，或者使用以下命令立即生效：newgrp docker总结至此，Docker 已经成功安装在你的 Debian 12 系统上，并且可以开始使用它来创建和管理容器了。如果在使用过程中遇到任何问题，可以通过以下命令查看 Docker 服务的状态：sudo systemctl status docker希望本教程对你有所帮助！如果你在安装过程中遇到任何问题，欢迎在评论区留言，我会尽力解答。

教你Debian12如何开机自动启动脚本
type: item
date: 2024-12-09T19:58:53+08:00
description: 如何使用 systemd 实现开机启动在 Linux 系统中，systemd 是一个强大的初始化系统和服务管理器，广泛用于启动和管理系统服务。通过 systemd，我们可以非常方便地配置脚本和程序在系统启动时自动运行。本文将介绍如何使用 systemd 来实现开机启动。1. 创建 systemd 服务文件要使自定义命令或脚本在系统启动时自动执行，首先需要创建一个 systemd 服务单元文件。我们以执行以下命令为例：nohup ./iptables-server -a :1086 -u admin -p xyidc123 > /dev/null 2>&1 &假设该命令的文件路径为 /root/iptables-web/iptables-server。步骤 1：创建服务文件首先，创建一个新的 systemd 服务文件。例如，我们将服务命名为 iptables-server.service。sudo nano /etc/systemd/system/iptables-server.service步骤 2：编辑服务文件在打开的文件中，添加以下内容：[Unit] Description=Start iptables server After=network.target [Service] ExecStart=/root/iptables-web/iptables-server -a :1086 -u admin -p xyidc123 WorkingDirectory=/root/iptables-web User=root Restart=always [Install] WantedBy=multi-user.targetDescription：服务的描述，可以自定义。After=network.target：确保该服务在网络服务启动后执行。ExecStart：指定要执行的命令及其参数。WorkingDirectory：设置命令执行的工作目录。User=root：指定以 root 用户身份运行该命令。Restart=always：确保服务在意外停止后会重新启动。WantedBy=multi-user.target：表示该服务将会在系统启动时自动启动。步骤 3：保存并退出编辑完成后，按 Ctrl+O 保存文件，按 Ctrl+X 退出编辑器。2. 重新加载 systemd 配置服务文件创建完成后，我们需要告诉 systemd 重新加载服务配置。sudo systemctl daemon-reload这条命令会重新加载所有服务文件，包括刚才我们创建的 iptables-server.service 文件。3. 启动服务接下来，我们可以手动启动服务来确认它是否能够正常运行。sudo systemctl start iptables-server.service您可以使用以下命令来检查服务是否正在运行：sudo systemctl status iptables-server.service如果服务启动正常，您应该能看到类似如下的输出：● iptables-server.service - Start iptables server Loaded: loaded (/etc/systemd/system/iptables-server.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2024-12-09 10:24:10 UTC; 1min ago ...4. 设置开机自启如果服务可以正常启动，并且您希望它在每次系统启动时自动运行，可以通过以下命令启用该服务：sudo systemctl enable iptables-server.service该命令会创建必要的符号链接，使服务在系统启动时自动启动。步骤 5：重启系统测试为确保设置生效，您可以重启计算机并确认服务是否会在启动时自动运行。sudo reboot重启后，您可以使用以下命令检查服务状态：sudo systemctl status iptables-server.service如果服务在启动时成功运行，您会看到服务的状态是 active (running)。5. 总结通过使用 systemd，我们可以非常方便地将脚本和命令设置为开机自动启动。只需创建一个自定义的服务单元文件，配置启动命令，重新加载 systemd，并启用服务，就能确保它在每次系统启动时都自动执行。使用 systemd 配置开机启动不仅可以节省手动执行命令的时间，还能提高系统的自动化管理能力。

教你Debian12如何使用ROOT用户登录
type: item
date: 2024-12-09T19:54:04+08:00
description: Root 用户无法通过 SSH 登录的问题及解决方案在 Linux 系统中，root 用户通常拥有最高的权限，允许进行系统级别的配置和操作。然而，出于安全考虑，很多 Linux 系统默认会禁用 root 用户通过 SSH 登录。如果您在使用 root 用户登录 SSH 时遇到问题，本篇博文将帮助您解决这一问题，并详细介绍如何配置防火墙（尤其是使用 IPT 防火墙时）确保 SSH 服务顺利运行。1. 检查 SSH 服务配置默认情况下，Linux 系统可能会禁止 root 用户通过 SSH 登录。这是出于安全性考虑，因为直接以 root 身份登录会增加暴力破解的风险。1.1 检查 sshd_config 配置文件要允许 root 用户通过 SSH 登录，首先需要编辑 SSH 配置文件 /etc/ssh/sshd_config。sudo nano /etc/ssh/sshd_config找到以下配置项：#PermitRootLogin prohibit-password将其修改为：PermitRootLogin yes或者，如果您希望仅允许通过密钥认证登录，可以设置为：PermitRootLogin without-passwordyes：允许使用密码或密钥认证登录。without-password：仅允许密钥认证，禁止密码认证。prohibit-password：禁止通过密码认证登录，仅允许密钥认证。修改完成后，保存文件并退出编辑器（按 Ctrl+O 保存，Ctrl+X 退出）。1.2 重启 SSH 服务配置更改后，您需要重启 SSH 服务才能使更改生效：sudo systemctl restart ssh2. 检查 IPT 防火墙配置如果您的系统使用的是 IPT（iptables）防火墙，确保防火墙规则允许 SSH 服务通过。默认情况下，iptables 可能会阻止外部访问 SSH 服务，特别是在新配置的服务器上。2.1 查看当前防火墙规则首先，检查当前防火墙规则，以确认是否已允许端口 22（SSH 默认端口）通过：sudo iptables -L您应该能看到类似以下的输出，其中包括允许 22 端口的规则：ACCEPT tcp -- anywhere anywhere tcp dpt:ssh如果没有显示允许端口 22 的规则，您需要手动添加规则。2.2 添加允许 SSH 通过的规则如果没有找到允许 SSH 的规则，可以使用以下命令添加规则：sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT这条命令会将一条规则添加到 INPUT 链中，允许所有来自外部的 TCP 流量访问端口 22（SSH）。2.3 保存防火墙配置如果您希望防火墙在系统重启后依然保持这些规则，需要保存当前的防火墙规则。使用以下命令保存：Debian/Ubuntu 系列系统：sudo iptables-save > /etc/iptables/rules.v4CentOS/RHEL 系列系统：sudo service iptables save2.4 检查防火墙状态使用以下命令确认防火墙规则已经生效：sudo iptables -L确保您能看到类似以下的规则：ACCEPT tcp -- anywhere anywhere tcp dpt:ssh3. 其他可能的原因3.1 检查 SSH 服务端口如果您修改了 SSH 服务的默认端口（22），确保防火墙允许新的端口通过。例如，假设您的 SSH 配置文件 /etc/ssh/sshd_config 中将端口修改为 2222：Port 2222在这种情况下，您需要允许端口 2222 通过防火墙：sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT3.2 检查 SELinux 状态在某些系统（如 CentOS/RHEL）中，SELinux 可能会限制 SSH 访问。您可以通过以下命令检查 SELinux 的状态：sestatus如果 SELinux 启用了并限制了 SSH 访问，可以暂时禁用 SELinux 或调整相关规则以允许 SSH 登录。4. 测试 SSH 登录配置完成后，您可以尝试通过 SSH 登录到服务器。使用以下命令：ssh root@your_server_ip如果一切配置正确，您将能够成功登录到系统。如果仍然无法登录，请再次检查 SSH 配置文件和防火墙设置。5. 总结如果您遇到 root 用户无法通过 SSH 登录的问题，通常是由于 SSH 服务的配置问题或防火墙的访问控制导致的。通过调整 /etc/ssh/sshd_config 文件、配置 IPT 防火墙规则，您可以解决这个问题并确保 root 用户能够顺利…

教你Debian12如何开启SSH
type: item
date: 2024-12-09T19:49:02+08:00
description: 前言因为自己买了小主机，自己折腾，记录下，以免后期需要用的时候，不用翻找！如何启用 SSH 服务并远程连接 Linux 系统在 Linux 系统中，SSH（Secure Shell）是远程管理和配置服务器的常用工具。通过 SSH，您可以安全地连接到远程主机，执行命令，进行文件传输等操作。本文将指导您如何在 Linux 系统上启用和配置 SSH 服务。1. 安装 SSH 服务默认情况下，一些 Linux 发行版可能没有安装 SSH 服务。首先，确保您的系统已经安装了 SSH 服务。Debian/Ubuntu 系列系统：sudo apt update sudo apt install openssh-serverCentOS/RHEL 系列系统：sudo yum install openssh-server安装完成后，您可以通过运行以下命令验证是否安装成功：ssh -V如果成功，您将看到 OpenSSH 版本号。2. 启动和启用 SSH 服务安装完 SSH 服务后，接下来需要启动 SSH 服务，并设置它开机自启。启动 SSH 服务：sudo systemctl start ssh设置 SSH 服务开机自启：sudo systemctl enable ssh检查 SSH 服务状态：sudo systemctl status ssh如果 SSH 服务已启动，您会看到类似以下的输出：● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2024-12-09 10:24:10 UTC; 1h 15min ago ...3. 配置 SSH 服务SSH 服务的配置文件通常位于 /etc/ssh/sshd_config。您可以编辑这个文件来调整 SSH 的设置，诸如允许/禁止 root 登录、修改默认端口等。编辑 SSH 配置文件：sudo nano /etc/ssh/sshd_config常见的配置项：允许 root 用户登录：PermitRootLogin yes修改为 yes 以允许 root 用户通过 SSH 登录，prohibit-password 表示仅允许密钥认证，no 则禁止 root 登录。更改 SSH 默认端口：Port 22如果您想更改 SSH 默认端口（提高安全性），可以修改为其他端口，例如 Port 2222。启用密码认证：PasswordAuthentication yes确保设置为 yes，否则将只能使用密钥认证登录。编辑完成后，按 Ctrl+O 保存文件，再按 Ctrl+X 退出 nano 编辑器。重启 SSH 服务以应用更改：sudo systemctl restart ssh4. 配置防火墙确保防火墙允许 SSH 服务通过。以下是一些常见防火墙配置命令：Debian/Ubuntu 系列系统（使用 ufw 防火墙）：sudo ufw allow sshCentOS/RHEL 系列系统（使用 firewalld）：sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload检查防火墙状态：sudo ufw status或者：sudo firewall-cmd --list-all5. 测试 SSH 连接配置完成后，您可以从远程机器使用 SSH 客户端连接到您的 Linux 系统。假设您的 Linux 系统 IP 地址为 192.168.1.100，可以在远程机器上执行以下命令：ssh username@192.168.1.100如果使用的是 root 用户，命令为：ssh root@192.168.1.100系统将提示您输入密码，输入正确的密码后，您将成功连接到远程 Linux 系统。6. 其他常用 SSH 操作生成 SSH 密钥对（推荐用于无密码登录）：ssh-keygen -t rsa -b 4096将公钥复制到远程主机：ssh-copy-id username@192.168.1.100通过 SSH 远程执行命令：ssh username@192.168.1.100 'ls -l'总结通过上述步骤，您已成功在 Linux 系统上启用了 SSH 服务，并能够通过远程连接管理您的服务器。SSH 是一种非常强大且安全的远程连接工具，广泛应用于系统管理和维护中。为了提高安全性，建议使用密钥认证代替密码认证，并定期审查 SSH 配置。