V变量—建站日记 - ssh
type: channel
link: http://vvars.com/tag/ssh/
items: 甲骨文云服务器丢失密钥和忘记密码无法登录SSH的终极方案
items: 通过ssh链接到群晖后台操作洗白
items: Linux修改SSH端口，减少被恶意扫描和暴力破解，提高网站安全性
items: 网站安全：使用 fail2ban 防御 SSH 服务器的暴力破解攻击
items: 提高网站安全性：修改SSH端口号，避免被暴力破解

甲骨文云服务器丢失密钥和忘记密码无法登录SSH的终极方案
type: item
date: 2026-05-23T13:41:00+08:00
description: 1 背景博主的ORACLE账号还是6年前注册的，这中间因为各种客观原因没有去折腾网站，电脑也换了，备份的资源都丢失了，里边应该包含ssh登录的一些信息。ssh登录Oracle Cloud Linux实例时，一直连接失败，通过oracle 后台的cloud shell切换root用户时，一直提示要输入密码，我试了有8次还是错误，实在想不起来，又怕继续尝试会被系统封号，只得作罢。必应和千问AI搜了一下，主要有如下方法： 1）分离引导卷； 2）创建定制映像； 3）重装系统（我试了几次没成功）； 4）杀龟（对VPS上没有部署任何服务的小伙伴这样最省事，大不了再开1台）。思索和尝试后，最终选择使用分离引导卷来修复ssh无法登录问题。2 分离引导卷解决思路：通过将故障实例 A 的“硬盘”挂载到另一台救援实例 B 上，直接为实例A 添加root用户名和密码，修复故障实例A本地的ssh私钥、公钥损坏或密码以往问题，添加完再把硬盘挂载回实例A。话不多说，直接上干货2.1 停止故障实例1）登录到 OCI 控制台。2）导航到 计算 (Compute) -> 实例 (Instances)。3）选择您无法 SSH 连接的故障实例。4点击顶部的 停止 (Stop) 按钮。5）等待实例状态完全变为已停止，这需要一段时间莫急。2.2 识别并分离启动盘1）在故障实例的详情页，找到 存储（Storage）-> 引导卷 (Boot Volume)。2）点击启动卷的右端 ... 打开详情界面3）记下启动卷名称（类似 ocid1.bootvolume...）。4）点击 分离 (Detach) 按钮，确认分离操作。5）等待分离操作完成，状态变为分离 (Detached)。2.3 准备救援实例需要一个能正常工作、且位于相同可用性域 (Availability Domain, AD) 的 Linux 实例作为“救援实例”。如果没有救援实例，请在与故障实例相同的 AD 中创建一个新的小型 Linux 实例。确保可以正常 SSH 连接到这个“救援实例”。我这里救援实例选择的ubuntu系统，主要是支持资料多。2.4 将故障实例启动盘附加到救援实例1）导航到故障实例的详情页。2）滚动到 存储 (Storage) -> 启动卷 (Boot volume)。3）点击故障实例启动卷：instance-xxx (Boot volume)。4）在 instance-xxx (Boot volume) 窗口中，选择Attached instance 选项，选择半虚拟化最简单，附加到救援实例，点击 附加 (Attach)，等待附加完成。3 救援实例挂载故障启动盘3.1 SSH 连接到救援实例；通过 SSH 连接到您的救援实例。注意是正常可以SSH登录的那台机器。3.2 识别故障盘通过lsblk或者 fdisk 其中之一sudo lsblk或sudo fdisk -l此时看到一个新磁盘（例如 /dev/sdb）。其系统分区通常是 /dev/sdb3。请根据您的实际输出确认正确的设备路径。3.3 创建挂载点：sudo mkdir /mnt/rescue3.4 挂载故障实例的根分区（请将 /dev/sdb3 替换为您上一步确认的正确路径）：sudo mount /dev/sdb3 /mnt/rescue3.5 查看最终挂载情况df -h显示磁盘挂载情况，如已挂载可以开展下一步工作。4 修复故障实例盘这里有两种方法，修复密码和DD救援包，我选择的时第一种方法。4.1 Chroot 到故障环境并设置密码1）使用 chroot 命令切换到故障实例的操作系统环境：sudo chroot /mnt/rescue2）设置新密码passwd root终端提示您输入并确认新密码。请设置一个您能记住的密码3）设置完成后，退出 chroot 环境exit4）卸载修复后的故障实例盘sudo umount /mnt/rescue5）完成故障实例盘的密码设置：4.2 DD救援包修复故障盘正常按4.1的方法就能完成SSH登录，有余力的可以下载DD救援包。如果自己没有备份救援包的话，这里提供2个ARM救援包和2个AMD救援包供大家使用：4.2.1 DD救援包下载1）ARM镜像Debian10 ，DD 过程应小于 12 分钟。用户名root/密码10086.fitcd /root && wget -cO debian.sdb.gz https://github.com/MIKU-N/OracleBackup/raw/main/dabian.sdb.gz?download= gzip -dc /root/debian.sdb.gz | dd of=/dev/sdb2）Ubuntu 20.04 ARM 官方原版完整救援包（恢复数据约4…

通过ssh链接到群晖后台操作洗白
type: item
date: 2025-01-22T01:10:02+08:00
description: 本篇适合二合一系统因各种原因不想进PE修改的洗白进阶操作，需要对Linux的命令有基本的了解，如果完全不懂，建议不要按此方法操作，请看常规流程！群晖洗白所用工具请先提前下载解压缩好下载地址：https://www.ilanzou.com/s/JEEnxAU?code=8123开放SSH端口。在群晖上操作：控制面板里面——>终端机和SNMP 下，启动SSH功能。群晖启用SSH注意选高级如图勾选就行了群晖洗白引导修复所用工具下载https://www.lanzoui.com/i7823bg 用“p...查看详情SSH连接 洗白操作第一步：用ssh工具putty中文版 连接到群晖的地址，用创建群晖的管理用户登陆。打开后提示点是输入你的账号然后回车，再输入密码回车（注意SSH输入密码的时候是不会有任何字符提示的）即可登录 小提示：中文账号可能无法正常使用建议改为英文账号。登录成功后如下第二步：获取root超级权限。sudo -i回车后会提示输入密码，即再次输入当前管理账号的密码。（注意SSH输入密码的时候是不会有任何字符提示的）成功后会变成root@Sxxx:~#， 其中root开头，#结尾。第三步：在/tmp目录下创建一个临时目录，名字随意，如：bootmkdir -p /tmp/boot第四步：切换到dev目录cd /dev第五步：引导分区挂载到boot一般情况下我们直接输入下面的命令就能直接挂载mount -t vfat synoboot1 /tmp/boot/但此处输入mount -t vfat synoboot1 /tmp/boot/ 既然是进阶版本那么很大可能是针对会报错的一般报错mount: mount point /tmp/boot/ does not exist这个是意料之中，因为二合一引导引导分区是随机出现的 不一定在synoboot1所以我们要找出引导分区首先我们输入sfdisk –l 看下各个硬盘和分区 图只是演示 ，请看自己的只需要关注/dev/sd数字 sda sdb sdc ….都代表着你的一个硬盘，而后面数字代表硬盘的分区号，二合一系统的引导分区号一般为4 也就是sd4 （代表任意字母，linux下第一个硬盘为sda，如果是第二个硬盘是sdb以此类推） sd*4 就是你二合一系统的引导分区，比如我搜索到我的硬盘有sda sdb 而只有sda有sda4 分区 然后输入命令 mount -t vfat sda4 /tmp/boot/一般就能挂载成功。如果你懒得查那么直接全部一起挂载也行，下边红字部分复制贴进去就行了。反正对的就会挂载成功，有问题会直接报错也不影响。cd /devmount -t vfat sda /tmp/boot/mount -t vfat sda1 /tmp/boot/mount -t vfat sda2 /tmp/boot/mount -t vfat sda3 /tmp/boot/mount -t vfat sda4 /tmp/boot/mount -t vfat sdb /tmp/boot/mount -t vfat sdb1 /tmp/boot/mount -t vfat sdb2 /tmp/boot/mount -t vfat sdb3 /tmp/boot/mount -t vfat sdb4 /tmp/boot/mount -t vfat sdc /tmp/boot/mount -t vfat sdc1 /tmp/boot/mount -t vfat sdc2 /tmp/boot/mount -t vfat sdc3 /tmp/boot/mount -t vfat sdc4 /tmp/boot/mount -t vfat sdc4 /tmp/boot/mount -t vfat sdd /tmp/boot/mount -t vfat sdd1 /tmp/boot/mount -t vfat sdd2 /tmp/boot/mount -t vfat sdd3 /tmp/boot/mount -t vfat sdd4 /tmp/boot/mount -t vfat sde /tmp/boot/mount -t vfat sde1 /tmp/boot/mount -t vfat sde2 /tmp/boot/mount -t vfat sde3 /tmp/boot/mount -t vfat sde4 /tmp/boot/mount -t vfat sdf /tmp/boot/mount -t vfat sdf1 /tmp/boot/mount -t vfat sdf2 /tmp/boot/mount -t vfat sdf3 /tmp/boot/mount -t vfat sdf4…

Linux修改SSH端口，减少被恶意扫描和暴力破解，提高网站安全性
type: item
date: 2024-12-27T04:20:40+08:00
description: 修改sshd端口在Linux系统中，sshd服务用于远程连接，默认端口为22。为了提高安全性，可以修改默认端口。以下是修改sshd端口的步骤：修改sshd配置文件首先，编辑sshd的配置文件/etc/ssh/sshd_config，找到Port配置项，将其修改为所需的端口号，例如2222：vim /etc/ssh/sshd_config将Port 22修改为Port 2222Port 2222保存并退出编辑器。配置防火墙接下来，需要在防火墙中开放新的端口。编辑防火墙配置文件/etc/sysconfig/iptables，添加以下规则：vim /etc/sysconfig/iptables添加以下规则以开放2222端口-A INPUT -p tcp --dport 2222 -j ACCEPT保存并退出编辑器，然后重启防火墙服务：service iptables restart重启sshd服务最后，重启sshd服务以使配置生效：service sshd restart现在，sshd服务将监听新的端口2222。可以通过以下命令验证：netstat -ntpl | grep sshd注意事项不要删除旧端口：如果不删除旧端口，可以同时使用旧端口和新端口进行连接防火墙配置：确保防火墙配置正确，否则可能无法通过新端口连接现有连接：重启sshd服务后，现有的连接不会断开通过以上步骤，可以有效地修改sshd端口，提高系统的安全性。

网站安全：使用 fail2ban 防御 SSH 服务器的暴力破解攻击
type: item
date: 2021-04-22T22:38:49+08:00
description: 对于SSH服务的常见的攻击就是暴力破解攻击——远程攻击者通过不同的密码来无限次地进行登录尝试。当然SSH可以设置使用非密码验证验证方式来对抗这种攻击，例如公钥验证或者双重验证。将不同的验证方法的优劣处先放在一边，如果我们必须使用密码验证方式怎么办？你是如何保护你的 SSH 服务器免遭暴力破解攻击的呢？fail2ban 是 Linux 上的一个著名的入侵保护的开源框架，它会监控多个系统的日志文件（例如：/var/log/auth.log 或者 /var/log/secure）并根据检测到的任何可疑的行为自动触发不同的防御动作。事实上，fail2ban 在防御对SSH服务器的暴力密码破解上非常有用。在这篇指导教程中，我会演示如何安装并配置 fail2ban 来保护 SSH 服务器以避免来自远程IP地址的暴力攻击。在linux上安装Fail2ban为了在CentOS 或 RHEL上安装fail2ban,首先设置EPEL仓库，然后运行以下命令。$ sudo yum install fail2ban在Fedora上安装fail2ban，简单地运行以下命令：$ sudo yum install fail2ban在ubuntu，Debian 或 Linux Mint上安装fail2ban：$ sudo apt-get install fail2ban为SSH服务器配置Fail2ban现在你已经准备好了通过配置 fail2ban 来加强你的SSH服务器。你需要编辑其配置文件 /etc/fail2ban/jail.conf。 在配置文件的“[DEFAULT]”区，你可以在此定义所有受监控的服务的默认参数，另外在特定服务的配置部分，你可以为每个服务（例如SSH，Apache等）设置特定的配置来覆盖默认的参数配置。在针对服务的监狱区（在[DEFAULT]区后面的地方），你需要定义一个[ssh-iptables]区，这里用来定义SSH相关的监狱配置。真正的禁止IP地址的操作是通过iptables完成的。下面是一个包含“ssh-iptables”监狱配置的/etc/fail2ban/jail.conf的文件样例。当然根据你的需要，你也可以指定其他的应用监狱。$ sudo vi /etc/fail2ban/jail.local[DEFAULT]以空格分隔的列表，可以是 IP 地址、CIDR 前缀或者 DNS 主机名用于指定哪些地址可以忽略 fail2ban 防御ignoreip = 127.0.0.1 172.31.0.0/24 10.10.0.0/24 192.168.0.0/24客户端主机被禁止的时长（秒）bantime = 86400客户端主机被禁止前允许失败的次数maxretry = 5查找失败次数的时长（秒）findtime = 600mta = sendmail[ssh-iptables]enabled = truefilter = sshdaction = iptables[name=SSH, port=ssh, protocol=tcp]sendmail-whois[name=SSH, dest=your@email.com, sender=fail2ban@email.com]Debian 系的发行版logpath = /var/log/auth.logRed Hat 系的发行版logpath = /var/log/securessh 服务的最大尝试次数maxretry = 3根据上述配置，fail2ban会自动禁止在最近10分钟内有超过3次访问尝试失败的任意IP地址。一旦被禁，这个IP地址将会在24小时内一直被禁止访问 SSH 服务。这个事件也会通过sendemail发送邮件通知。一旦配置文件准备就绪，按照以下方式重启fail2ban服务。在 Debian, Ubuntu 或 CentOS/RHEL 6:$ sudo service fail2ban restart在 Fedora 或 CentOS/RHEL 7:$ sudo systemctl restart fail2ban为了验证fail2ban成功运行，使用参数'ping'来运行fail2ban-client 命令。 如果fail2ban服务正常运行，你可以看到“pong（嘭）”作为响应。$ sudo fail2ban-client pingServer replied: pong测试 fail2ban 保护SSH免遭暴力破解攻击为了测试fail2ban是否能正常工作，尝试通过使用错误的密码来用SSH连接到服务器模拟一个暴力破解攻击。与此同时，监控 /var/log/fail2ban.log，该文件记录在fail2ban中发生的任何敏感事件。$ sudo tail -f /v…

提高网站安全性：修改SSH端口号，避免被暴力破解
type: item
date: 2021-04-22T22:36:00+08:00
description: 相信很多站长朋友都有这样的经历，每次登录SSH的时候都是一堆失败登录，全都是暴力破解的，非常头疼。本文就来教大家如何简单修改SSH端口号，减少被暴力破解风险。WARNING! The remote SSH server rejected X11 forwarding request. Last failed login: Thu Apr 22 22:28:02 CST 2021 from 116.5.168.215 on ssh:notty There were 163897 failed login attempts since the last successful login. Last login: Thu Apr 1 00:22:11 2021 from 14.127.75.38 1.登录SSH。2.编辑SSH配置文件：vi /etc/ssh/sshd_config在#Port 22行去掉#号注释，同时加入想要使用的端口号如 Port 61347 还有一种方法就是不删除22端口号直接增加新端口号，可以直接用下面的命令：echo 'Port 61347' > /etc/ssh/sshd_config && reboot 3.重启SSH服务 service sshd restart4.整个世界终于清净了。