<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://md5.pw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sky</id>
	<title>md5.pw - 用户贡献 [zh]</title>
	<link rel="self" type="application/atom+xml" href="https://md5.pw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sky"/>
	<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=Special:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/Sky"/>
	<updated>2026-05-06T14:23:45Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://md5.pw/index.php?title=SSH%E8%BF%9E%E6%8E%A5%E6%95%85%E9%9A%9C%E6%8E%92%E9%99%A4%E6%8C%87%E5%8D%97%EF%BC%88%E6%8B%92%E7%BB%9D/%E8%B6%85%E6%97%B6/%E5%AF%86%E9%92%A5%E5%8F%8A%E5%B8%B8%E8%A7%81%E4%BF%AE%E5%A4%8D%EF%BC%89&amp;diff=1657</id>
		<title>SSH连接故障排除指南（拒绝/超时/密钥及常见修复）</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=SSH%E8%BF%9E%E6%8E%A5%E6%95%85%E9%9A%9C%E6%8E%92%E9%99%A4%E6%8C%87%E5%8D%97%EF%BC%88%E6%8B%92%E7%BB%9D/%E8%B6%85%E6%97%B6/%E5%AF%86%E9%92%A5%E5%8F%8A%E5%B8%B8%E8%A7%81%E4%BF%AE%E5%A4%8D%EF%BC%89&amp;diff=1657"/>
		<updated>2026-03-19T07:45:49Z</updated>

		<summary type="html">&lt;p&gt;Sky：​SSH连接故障排除指南（拒绝/超时/密钥及常见修复）&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
相信很多人在第一次使用Shell软件登录自己新购买的服务器湖或者在部署什么服务时，不小心点了什么操作导致了SSH无法连接成功。这时候，可能会出现不同的报错情况，新手小白可能会不知所措。说实话，我也曾经遇到过这种情况，也曾经因为这种情况消磨了我对鼓捣服务器的热情。后面也是自己找了很多资料，才大体搞清了具体的问题所在，以及如何去解决对应的问题。&lt;br /&gt;
&lt;br /&gt;
这篇文章我会带大家针对VPS日常使用中最常见的SSH故障，提供从问题分析到如何解决的排查指南。&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 一、 快速诊断：你遇到的是哪种情况？ ==&lt;br /&gt;
在动手敲代码之前，我们需要先看Shell输出了什么错误内容。SSH报错通常分为三大流派，它们代表了网络通信中完全不同的三个失败阶段。请对照下表，定位你的问题属于哪一类：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!报错提示 (终端输出)&lt;br /&gt;
!中文直译&lt;br /&gt;
!故障发生的阶段&lt;br /&gt;
!核心原因概括&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Connection timed out&amp;lt;/code&amp;gt;&lt;br /&gt;
|连接超时&lt;br /&gt;
|网络层 / 路由层&lt;br /&gt;
|数据包在半路走丢了，或者被服务器的防火墙直接丢弃。服务器根本没收到你的“敲门声”。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Connection refused&amp;lt;/code&amp;gt;&lt;br /&gt;
|拒绝连接&lt;br /&gt;
|服务层 / 端口层&lt;br /&gt;
|数据包成功到达了服务器，但服务器告诉你：“这个端口没有SSH服务在运行”。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Permission denied&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;Authentication failed&amp;lt;/code&amp;gt;&lt;br /&gt;
|权限被拒绝&lt;br /&gt;
身份验证失败&lt;br /&gt;
|认证层 / 密钥层&lt;br /&gt;
|你成功敲开了门，但服务器不认识你（密码错误、密钥不匹配、权限配置错乱）。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Host key verification failed&amp;lt;/code&amp;gt;&lt;br /&gt;
|主机密钥验证失败&lt;br /&gt;
|客户端安全层&lt;br /&gt;
|你的本地电脑发现这台服务器的“指纹”变了（通常发生在VPS重装系统之后），出于安全保护拒绝连接。&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 二、 深度排查 1：Connection timed out / Connection failed (连接超时/失败) ==&lt;br /&gt;
“连接超时”是最让人头疼的报错，因为它的原因往往游离在服务器系统之外。它意味着你发送的TCP连接请求（SYN报文）如同泥牛入海，没有收到任何回应。&lt;br /&gt;
[[File:Ssh1.png|center|thumb|914x914px]]&lt;br /&gt;
&lt;br /&gt;
== 1. 检查服务器是否“活着” (宕机排查) ==&lt;br /&gt;
很多时候，超时仅仅是因为VPS关机了或者宿主机（母机）正在维护。&lt;br /&gt;
&lt;br /&gt;
* 行动： 登录你的VPS控制面板（例如 KiwiVM 面板）。&lt;br /&gt;
* 查看状态： 确认服务器的状态是否显示为 &amp;lt;code&amp;gt;Running&amp;lt;/code&amp;gt;（运行中）。&lt;br /&gt;
* 急救： 如果状态是 &amp;lt;code&amp;gt;Stopped&amp;lt;/code&amp;gt;，点击 &amp;lt;code&amp;gt;Start&amp;lt;/code&amp;gt; 开机。如果显示 &amp;lt;code&amp;gt;Running&amp;lt;/code&amp;gt; 但依然超时，尝试点击 &amp;lt;code&amp;gt;Hard Reset&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;Force Restart&amp;lt;/code&amp;gt; 进行强制重启。&lt;br /&gt;
&lt;br /&gt;
== 2. 检查 IP 是否被网络防火墙阻断 (IP 被墙) ==&lt;br /&gt;
如果你的VPS位于海外，这是最常见的超时原因。本地运营商或主干网防火墙可能拦截了发往该IP的数据包。&lt;br /&gt;
&lt;br /&gt;
* 行动： 使用多节点 Ping 测试工具（强烈推荐访问 &amp;lt;code&amp;gt;ping.pe&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;itdog.cn&amp;lt;/code&amp;gt;）。&lt;br /&gt;
* 诊断： 在工具中输入你的 VPS IP 地址。&lt;br /&gt;
** 如果 海外节点全绿，国内节点全红：确诊你的 IP 已被国内网络防火墙阻断（被墙）。&lt;br /&gt;
** 如果 全球节点全红：说明服务器处于宕机状态，或者服务器内部的防火墙拦截了所有 ICMP (Ping) 请求。&lt;br /&gt;
* 急救： 如果 IP 被墙，如果是动态 IP 服务商可以尝试重新获取 IP；如果是固定 IP 服务商，通常需要购买更换 IP 的服务，或者通过其他海外节点进行中转跳板连接。&lt;br /&gt;
&lt;br /&gt;
== 3. 检查系统级防火墙是否拦截了 SSH 端口 ==&lt;br /&gt;
如果你在之前登录时安装了 &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; 或修改了 &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; 规则，但忘记放行 SSH 端口就启用了防火墙，那么你就会把自己“锁在门外”。&lt;br /&gt;
&lt;br /&gt;
* 行动： 此时你无法通过 SSH 登录，必须使用服务商提供的 VNC Console (网页版控制台) 或 Serial Console (串行控制台)。以 KiwiVM 面板为例，找到 &amp;lt;code&amp;gt;Root shell - interactive&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;VNC&amp;lt;/code&amp;gt; 选项进入系统。&lt;br /&gt;
* 诊断与修复 (以 UFW 为例)：  在 VNC 的黑框中登录 Root 账户，输入以下命令查看防火墙状态：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ufw status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:Ssh2.png|center|thumb|898x898px]]&lt;br /&gt;
如果你发现列表中没有允许 &amp;lt;code&amp;gt;22/tcp&amp;lt;/code&amp;gt; (或你自定义的 SSH 端口)，请立即放行：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ufw allow 22/tcp&lt;br /&gt;
ufw reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;如果是 &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; 把你锁住了，可以通过以下命令紧急清空规则（注意：这会暴露所有端口，仅作紧急救援使用）：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
iptables -F&lt;br /&gt;
iptables -X&lt;br /&gt;
iptables -P INPUT ACCEPT&lt;br /&gt;
iptables -P OUTPUT ACCEPT&lt;br /&gt;
iptables -P FORWARD ACCEPT&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 三、 深度排查 2：Connection refused (拒绝连接) ==&lt;br /&gt;
当你看到“拒绝连接”时，其实应该松一口气。这说明网络是畅通的，IP 没有被墙，数据包成功抵达了目标机器。只是目标机器的操作系统直接返回了一个 &amp;lt;code&amp;gt;RST&amp;lt;/code&amp;gt; (复位) 数据包，无情地关上了门。&lt;br /&gt;
&lt;br /&gt;
== 1. 端口号输错了 ==&lt;br /&gt;
这是新手最容易犯的低级错误。你可能出于安全考虑，在 &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; 中把 SSH 端口从 &amp;lt;code&amp;gt;22&amp;lt;/code&amp;gt; 改成了 &amp;lt;code&amp;gt;28482&amp;lt;/code&amp;gt;，但在登录时却忘了指定新端口，使用的依然是默认端口。&lt;br /&gt;
[[File:Ssh3.png|center|thumb|951x951px]]&lt;br /&gt;
&lt;br /&gt;
* 错误示范：&amp;lt;code&amp;gt;ssh root@198.51.100.1&amp;lt;/code&amp;gt; (默认连接 22 端口，被拒绝)&lt;br /&gt;
* 正确写法：&amp;lt;code&amp;gt;ssh -p 28482 root@198.51.100.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. SSH 服务 (sshd) 崩溃或未随系统启动 ==&lt;br /&gt;
如果是你重装了系统或者强制重启后出现此问题，极有可能是 SSH 守护进程（sshd）没有正常运行。&lt;br /&gt;
&lt;br /&gt;
* 行动： 同样需要登录控制面板的 VNC Console。&lt;br /&gt;
* 诊断： 检查 SSH 服务的运行状态：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status sshd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;或者在 Debian/Ubuntu 系统上：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status ssh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[File:Ssh5.png|center|thumb|951x951px]]&lt;br /&gt;
急救：&lt;br /&gt;
&lt;br /&gt;
如果状态显示为 &amp;lt;code&amp;gt;inactive (dead)&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;failed&amp;lt;/code&amp;gt;，尝试手动启动它：&lt;br /&gt;
 systemctl start sshd&amp;lt;/code&amp;gt;&lt;br /&gt;
为了防止下次重启再次失效，设置其开机自启：&lt;br /&gt;
 systemctl enable sshd&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:Ssh4.png|center|thumb|951x951px]]&lt;br /&gt;
&lt;br /&gt;
== 3. 配置文件语法错误导致服务启动失败 ==&lt;br /&gt;
如果你刚修改过 &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; 文件（比如修改端口、禁用密码登录等），不小心多打了一个字母，保存并重启系统后，sshd 服务会因为语法错误而彻底罢工。&lt;br /&gt;
&lt;br /&gt;
* 诊断： 在 VNC 中执行启动命令时，如果提示失败，可以查看详细的系统日志：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;journalctl -xeu sshd.service&amp;lt;/syntaxhighlight&amp;gt;或者让 sshd 帮我们检查配置文件的语法错误：&lt;br /&gt;
 &#039;&#039;&#039;sshd -t&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 如果配置有错，系统会精准地告诉你哪一行写错了（例如：&amp;lt;code&amp;gt;line 15: Bad configuration option&amp;lt;/code&amp;gt;）。&lt;br /&gt;
* 修复： 使用 &amp;lt;code&amp;gt;nano /etc/ssh/sshd_config&amp;lt;/code&amp;gt; 进去把那一行的拼写错误改回来，然后再次 &amp;lt;code&amp;gt;systemctl start sshd&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 四、 深度排查 3：Permission denied / 密钥错误 (权限被拒绝) ==&lt;br /&gt;
走到这一步，说明网络通畅，SSH服务也在正常运转，但这台服务器的“保安”觉得你身份可疑，不让你进。&lt;br /&gt;
&lt;br /&gt;
== 1. Root 密码真的输错了 ==&lt;br /&gt;
人的记忆是不可靠的。特别是很多服务商在开通 VPS 时，会随机生成一串诸如 &amp;lt;code&amp;gt;a8F!k9Lz@&amp;lt;/code&amp;gt; 这样反人类的初始密码。&lt;br /&gt;
&lt;br /&gt;
* 修复： 不要怀疑自己，直接去 VPS 控制面板（KiwiVM）寻找 Root password modification 或 Reset Root Password 选项。点击重置后，系统会强制修改密码并重启 VPS。用新生成的密码重新登录即可。&lt;br /&gt;
[[File:Ssh6.png|center|thumb|945x945px]]&lt;br /&gt;
&lt;br /&gt;
== 2. 密钥认证失败：~/.ssh 目录权限“洁癖” ==&lt;br /&gt;
如果你配置了更加安全的 SSH Key (密钥对) 登录，但依然提示 &amp;lt;code&amp;gt;Permission denied (publickey)&amp;lt;/code&amp;gt;，90% 的概率是因为 Linux 对密钥文件的权限要求有着极其变态的“洁癖”。&lt;br /&gt;
&lt;br /&gt;
如果别人能随意读取或修改你的密钥文件，那么密钥登录就失去了意义。因此，如果你的 &amp;lt;code&amp;gt;.ssh&amp;lt;/code&amp;gt; 目录或 &amp;lt;code&amp;gt;authorized_keys&amp;lt;/code&amp;gt; 文件的权限设置过宽，SSH 服务会直接拒绝读取它们。&lt;br /&gt;
&lt;br /&gt;
* 行动： 通过 VNC 控制台登录（或使用密码登录，如果你还没禁用密码的话）。&lt;br /&gt;
* 修复核心权限： 严格执行以下权限锁定命令：&lt;br /&gt;
&lt;br /&gt;
 # 设定当前用户根目录的权限 (不能开放给所有用户组写入)&lt;br /&gt;
 chmod 750 ~&lt;br /&gt;
 &lt;br /&gt;
 # 设定 .ssh 文件夹的权限：仅所有者可读写执行 (rwx------)&lt;br /&gt;
 chmod 700 ~/.ssh&lt;br /&gt;
 &lt;br /&gt;
 # 设定公钥记录文件的权限：仅所有者可读写 (rw-------)&lt;br /&gt;
 chmod 600 ~/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
修复权限后，通常无需重启 sshd，直接在本地重新尝试连接即可。&lt;br /&gt;
&lt;br /&gt;
== 3. 公钥粘贴格式错误 ==&lt;br /&gt;
在将本地的 &amp;lt;code&amp;gt;.pub&amp;lt;/code&amp;gt; 公钥内容复制到 VPS 的 &amp;lt;code&amp;gt;~/.ssh/authorized_keys&amp;lt;/code&amp;gt; 文件时，不小心在中间多加了一个换行符，或者复制漏了最后一个字符，都会导致指纹无法匹配。&lt;br /&gt;
&lt;br /&gt;
* 修复： 在 VNC 中使用 &amp;lt;code&amp;gt;cat ~/.ssh/authorized_keys&amp;lt;/code&amp;gt; 查看。正常情况下，一个公钥必须完完整整地占据单独的一行（通常以 &amp;lt;code&amp;gt;ssh-rsa&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;ssh-ed25519&amp;lt;/code&amp;gt; 开头，以你的电脑用户名结尾）。如果断行了，使用 &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt; 编辑器将其退格拼接到同一行。&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 五、 特殊疑难杂症：Host key verification failed ==&lt;br /&gt;
这是一个非常经典的报错。表现为你在本地终端输入 &amp;lt;code&amp;gt;ssh root@IP&amp;lt;/code&amp;gt; 后，弹出一大段充满感叹号的警告提示，包含 &amp;quot;WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!&amp;quot;。&amp;lt;blockquote&amp;gt;原理解析：&lt;br /&gt;
&lt;br /&gt;
每次你连接一台全新的 VPS 时，你的本地电脑都会悄悄把这台服务器的唯一指纹记录在本地的一个叫 &amp;lt;code&amp;gt;known_hosts&amp;lt;/code&amp;gt; 的文件里。&lt;br /&gt;
&lt;br /&gt;
如果你把这台 VPS 重装了操作系统，它的服务器指纹就变了。当你再次连接相同的 IP 时，你的本地电脑一对比：“哎？IP 没变，但指纹不对！这可能是一个伪造的钓鱼服务器！” 于是出于保护机制，强制掐断了连接。&amp;lt;/blockquote&amp;gt;&#039;&#039;&#039;修复 (本地电脑操作)：&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
你只需要告诉你的本地电脑：“我知道它重装了，把旧的指纹删掉吧”。&lt;br /&gt;
&lt;br /&gt;
如果你使用的是 Windows/Mac/Linux 的终端，直接执行以下命令（将 IP 替换为你的 VPS IP）：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-keygen -R 你的VPS_IP地址&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;系统会提示 &amp;lt;code&amp;gt;Host 你的VPS_IP地址 has been removed&amp;lt;/code&amp;gt;。再次发起 SSH 连接，输入 &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; 接受新的指纹即可。&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 六、 终极救援原则：永远相信 VNC ==&lt;br /&gt;
在这篇指南中，我们反复提到了 VNC Console (或称 KVM/Serial Console)。&lt;br /&gt;
&lt;br /&gt;
请记住一条铁律：只要你的 VPS 还在开机状态，无论 SSH 怎么崩溃、无论防火墙怎么乱拦截，VNC 控制台永远能让你以物理机插显示器的方式进入系统。&lt;br /&gt;
&lt;br /&gt;
VNC 是不依赖于系统网络配置的底层带外管理工具。如果你尝试了上述所有方法依然无果，请静下心来：&lt;br /&gt;
&lt;br /&gt;
# 打开服务商面板的 VNC。&lt;br /&gt;
# 输入 &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; 和密码（由于 VNC 是模拟物理键盘，可能不支持复制粘贴，且注意排查输入法的大写锁定）。&lt;br /&gt;
# 使用 &amp;lt;code&amp;gt;ping 8.8.8.8&amp;lt;/code&amp;gt; 测试外网连通性。&lt;br /&gt;
# 使用 &amp;lt;code&amp;gt;ip addr&amp;lt;/code&amp;gt; 检查网卡是否正常获取了 IP 地址。&lt;br /&gt;
# 检查系统日志 &amp;lt;code&amp;gt;tail -n 50 /var/log/auth.log&amp;lt;/code&amp;gt; 来寻找 SSH 拒绝登录的蛛丝马迹。&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 结语与下一步行动 ==&lt;br /&gt;
SSH 故障排查是一个建立排错逻辑的绝佳过程。当你能够熟练地从网络层、服务层、认证层逐一剥丝抽茧定位问题时，你就不再是一个只会复制粘贴命令的新手，而是初步具备了独立解决问题的架构师思维。&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Ssh6.png&amp;diff=1656</id>
		<title>File:Ssh6.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Ssh6.png&amp;diff=1656"/>
		<updated>2026-03-19T07:41:59Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ssh6&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Ssh5.png&amp;diff=1655</id>
		<title>File:Ssh5.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Ssh5.png&amp;diff=1655"/>
		<updated>2026-03-19T07:35:30Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ssh5&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Ssh4.png&amp;diff=1654</id>
		<title>File:Ssh4.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Ssh4.png&amp;diff=1654"/>
		<updated>2026-03-19T07:33:21Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ssh4&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Ssh3.png&amp;diff=1653</id>
		<title>File:Ssh3.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Ssh3.png&amp;diff=1653"/>
		<updated>2026-03-19T07:27:39Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ssh3&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Ssh2.png&amp;diff=1652</id>
		<title>File:Ssh2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Ssh2.png&amp;diff=1652"/>
		<updated>2026-03-19T07:24:42Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ssh2&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Ssh1.png&amp;diff=1651</id>
		<title>File:Ssh1.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Ssh1.png&amp;diff=1651"/>
		<updated>2026-03-19T07:22:14Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ssh1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=SSH%E8%BF%9E%E6%8E%A5%E6%95%85%E9%9A%9C%E6%8E%92%E9%99%A4%E6%8C%87%E5%8D%97%EF%BC%88%E6%8B%92%E7%BB%9D/%E8%B6%85%E6%97%B6/%E5%AF%86%E9%92%A5%E5%8F%8A%E5%B8%B8%E8%A7%81%E4%BF%AE%E5%A4%8D%EF%BC%89&amp;diff=1649</id>
		<title>SSH连接故障排除指南（拒绝/超时/密钥及常见修复）</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=SSH%E8%BF%9E%E6%8E%A5%E6%95%85%E9%9A%9C%E6%8E%92%E9%99%A4%E6%8C%87%E5%8D%97%EF%BC%88%E6%8B%92%E7%BB%9D/%E8%B6%85%E6%97%B6/%E5%AF%86%E9%92%A5%E5%8F%8A%E5%B8%B8%E8%A7%81%E4%BF%AE%E5%A4%8D%EF%BC%89&amp;diff=1649"/>
		<updated>2026-03-18T15:07:12Z</updated>

		<summary type="html">&lt;p&gt;Sky：​SSH连接故障排除指南（拒绝/超时/密钥及常见修复）【未完成】&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
相信很多人在第一次使用shell软件登录自己新购买的服务器湖或者在部署什么服务时，不小心点了什么操作导致了SSH无法连接成功。这时候，可能会出现不同的报错情况，新手小白可能会不知所措。说实话，我也曾经遇到过这种情况，也曾经因为这种情况消磨了我对鼓捣服务器的热情。后面也是自己找了很多资料，才大体搞清了具体的问题所在，以及如何去解决对应的问题。&lt;br /&gt;
&lt;br /&gt;
这篇文章我会带大家针对VPS日常使用中最常见的SSH故障，提供从问题分析到如何解决的排查指南。&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 一、 快速诊断：你遇到的是哪种情况？ ==&lt;br /&gt;
在动手敲代码之前，我们需要先“望闻问切”。SSH报错通常分为三大流派，它们代表了网络通信中完全不同的三个失败阶段。请对照下表，定位你的问题属于哪一类：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!报错提示 (终端输出)&lt;br /&gt;
!中文直译&lt;br /&gt;
!故障发生的阶段&lt;br /&gt;
!核心原因概括&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Connection timed out&amp;lt;/code&amp;gt;&lt;br /&gt;
|连接超时&lt;br /&gt;
|网络层 / 路由层&lt;br /&gt;
|数据包在半路走丢了，或者被服务器的防火墙直接丢弃。服务器根本没收到你的“敲门声”。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Connection refused&amp;lt;/code&amp;gt;&lt;br /&gt;
|拒绝连接&lt;br /&gt;
|服务层 / 端口层&lt;br /&gt;
|数据包成功到达了服务器，但服务器告诉你：“这个端口没有SSH服务在运行”。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Permission denied&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;Authentication failed&amp;lt;/code&amp;gt;&lt;br /&gt;
|权限被拒绝&lt;br /&gt;
身份验证失败&lt;br /&gt;
|认证层 / 密钥层&lt;br /&gt;
|你成功敲开了门，但服务器不认识你（密码错误、密钥不匹配、权限配置错乱）。&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Host key verification failed&amp;lt;/code&amp;gt;&lt;br /&gt;
|主机密钥验证失败&lt;br /&gt;
|客户端安全层&lt;br /&gt;
|你的本地电脑发现这台服务器的“指纹”变了（通常发生在VPS重装系统之后），出于安全保护拒绝连接。&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 二、 深度排查 1：Connection timed out (连接超时) ==&lt;br /&gt;
“连接超时”是最让人头疼的报错，因为它的原因往往游离在服务器系统之外。它意味着你发送的TCP连接请求（SYN报文）如同泥牛入海，没有收到任何回应。&lt;br /&gt;
&lt;br /&gt;
== 1. 检查服务器是否“活着” (宕机排查) ==&lt;br /&gt;
很多时候，超时仅仅是因为VPS关机了或者宿主机（母机）正在维护。&lt;br /&gt;
&lt;br /&gt;
* 行动： 登录你的VPS控制面板（例如 KiwiVM 面板）。&lt;br /&gt;
* 查看状态： 确认服务器的状态是否显示为 &amp;lt;code&amp;gt;Running&amp;lt;/code&amp;gt;（运行中）。&lt;br /&gt;
* 急救： 如果状态是 &amp;lt;code&amp;gt;Stopped&amp;lt;/code&amp;gt;，点击 &amp;lt;code&amp;gt;Start&amp;lt;/code&amp;gt; 开机。如果显示 &amp;lt;code&amp;gt;Running&amp;lt;/code&amp;gt; 但依然超时，尝试点击 &amp;lt;code&amp;gt;Hard Reset&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;Force Restart&amp;lt;/code&amp;gt; 进行强制重启。&lt;br /&gt;
&lt;br /&gt;
== 2. 检查 IP 是否被网络防火墙阻断 (IP 被墙) ==&lt;br /&gt;
如果你的VPS位于海外，这是最常见的超时原因。本地运营商或主干网防火墙可能拦截了发往该IP的数据包。&lt;br /&gt;
&lt;br /&gt;
* 行动： 使用多节点 Ping 测试工具（强烈推荐访问 &amp;lt;code&amp;gt;ping.pe&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;itdog.cn&amp;lt;/code&amp;gt;）。&lt;br /&gt;
* 诊断： 在工具中输入你的 VPS IP 地址。&lt;br /&gt;
** 如果 海外节点全绿，国内节点全红：确诊你的 IP 已被国内网络防火墙阻断（被墙）。&lt;br /&gt;
** 如果 全球节点全红：说明服务器处于宕机状态，或者服务器内部的防火墙拦截了所有 ICMP (Ping) 请求。&lt;br /&gt;
* 急救： 如果 IP 被墙，如果是动态 IP 服务商可以尝试重新获取 IP；如果是固定 IP 服务商，通常需要购买更换 IP 的服务，或者通过其他海外节点进行中转跳板连接。&lt;br /&gt;
&lt;br /&gt;
== 3. 检查系统级防火墙是否拦截了 SSH 端口 ==&lt;br /&gt;
如果你在上次登录时安装了 &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; 或修改了 &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; 规则，但忘记放行 SSH 端口就启用了防火墙，那么你就会把自己“锁在门外”。&lt;br /&gt;
&lt;br /&gt;
* 行动： 此时你无法通过 SSH 登录，必须使用服务商提供的 VNC Console (网页版控制台) 或 Serial Console (串行控制台)。以 KiwiVM 面板为例，找到 &amp;lt;code&amp;gt;Root shell - interactive&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;VNC&amp;lt;/code&amp;gt; 选项进入系统。&lt;br /&gt;
* 诊断与修复 (以 UFW 为例)：  在 VNC 的黑框中登录 Root 账户，输入以下命令查看防火墙状态：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ufw status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;如果你发现列表中没有允许 &amp;lt;code&amp;gt;22/tcp&amp;lt;/code&amp;gt; (或你自定义的 SSH 端口)，请立即放行：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ufw allow 22/tcp&lt;br /&gt;
ufw reload&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;如果是 &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; 把你锁住了，可以通过以下命令紧急清空规则（注意：这会暴露所有端口，仅作紧急救援使用）：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
iptables -F&lt;br /&gt;
iptables -X&lt;br /&gt;
iptables -P INPUT ACCEPT&lt;br /&gt;
iptables -P OUTPUT ACCEPT&lt;br /&gt;
iptables -P FORWARD ACCEPT&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 三、 深度排查 2：Connection refused (拒绝连接) ==&lt;br /&gt;
当你看到“拒绝连接”时，其实应该松一口气。这说明网络是畅通的，IP 没有被墙，数据包成功抵达了目标机器。只是目标机器的操作系统直接返回了一个 &amp;lt;code&amp;gt;RST&amp;lt;/code&amp;gt; (复位) 数据包，无情地关上了门。&lt;br /&gt;
&lt;br /&gt;
== 1. 端口号输错了 ==&lt;br /&gt;
这是新手最容易犯的低级错误。你可能出于安全考虑，在 &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; 中把 SSH 端口从 &amp;lt;code&amp;gt;22&amp;lt;/code&amp;gt; 改成了 &amp;lt;code&amp;gt;28492&amp;lt;/code&amp;gt;，但在登录时却忘了指定新端口，使用的依然是默认端口。&lt;br /&gt;
&lt;br /&gt;
* 错误示范：&amp;lt;code&amp;gt;ssh root@198.51.100.1&amp;lt;/code&amp;gt; (默认连接 22 端口，被拒绝)&lt;br /&gt;
* 正确写法：&amp;lt;code&amp;gt;ssh -p 28492 root@198.51.100.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. SSH 服务 (sshd) 崩溃或未随系统启动 ==&lt;br /&gt;
如果是你重装了系统或者强制重启后出现此问题，极有可能是 SSH 守护进程（sshd）没有正常运行。&lt;br /&gt;
&lt;br /&gt;
* 行动： 同样需要登录控制面板的 VNC Console。&lt;br /&gt;
* 诊断： 检查 SSH 服务的运行状态：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status sshd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;或者在 Debian/Ubuntu 系统上：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status ssh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;急救：&lt;br /&gt;
&lt;br /&gt;
如果状态显示为 &amp;lt;code&amp;gt;inactive (dead)&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;failed&amp;lt;/code&amp;gt;，尝试手动启动它：&lt;br /&gt;
 systemctl start sshd&amp;lt;/code&amp;gt;&lt;br /&gt;
为了防止下次重启再次失效，设置其开机自启：&lt;br /&gt;
 systemctl enable sshd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. 配置文件语法错误导致服务启动失败 ==&lt;br /&gt;
如果你刚修改过 &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; 文件（比如修改端口、禁用密码登录等），不小心多打了一个字母，保存并重启系统后，sshd 服务会因为语法错误而彻底罢工。&lt;br /&gt;
&lt;br /&gt;
* 诊断： 在 VNC 中执行启动命令时，如果提示失败，可以查看详细的系统日志：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
journalctl -xeu sshd.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;或者让 sshd 帮我们检查配置文件的语法错误：&lt;br /&gt;
 &#039;&#039;&#039;sshd -t&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 如果配置有错，系统会精准地告诉你哪一行写错了（例如：&amp;lt;code&amp;gt;line 15: Bad configuration option&amp;lt;/code&amp;gt;）。&lt;br /&gt;
* 修复： 使用 &amp;lt;code&amp;gt;nano /etc/ssh/sshd_config&amp;lt;/code&amp;gt; 进去把那一行的拼写错误改回来，然后再次 &amp;lt;code&amp;gt;systemctl start sshd&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 四、 深度排查 3：Permission denied / 密钥错误 (权限被拒绝) ==&lt;br /&gt;
走到这一步，说明网络通畅，SSH服务也在正常运转，但这台服务器的“保安”觉得你身份可疑，不让你进。&lt;br /&gt;
&lt;br /&gt;
== 1. Root 密码真的输错了 ==&lt;br /&gt;
人的记忆是不可靠的。特别是很多服务商在开通 VPS 时，会随机生成一串诸如 &amp;lt;code&amp;gt;a8F!k9Lz@&amp;lt;/code&amp;gt; 这样反人类的初始密码。&lt;br /&gt;
&lt;br /&gt;
* 修复： 不要怀疑自己，直接去 VPS 控制面板（KiwiVM）寻找 Root password modification 或 Reset Root Password 选项。点击重置后，系统会强制修改密码并重启 VPS。用新生成的密码重新登录即可。&lt;br /&gt;
&lt;br /&gt;
== 2. 密钥认证失败：~/.ssh 目录权限“洁癖” ==&lt;br /&gt;
如果你配置了更加安全的 SSH Key (密钥对) 登录，但依然提示 &amp;lt;code&amp;gt;Permission denied (publickey)&amp;lt;/code&amp;gt;，90% 的概率是因为 Linux 对密钥文件的权限要求有着极其变态的“洁癖”。&lt;br /&gt;
&lt;br /&gt;
如果别人能随意读取或修改你的密钥文件，那么密钥登录就失去了意义。因此，如果你的 &amp;lt;code&amp;gt;.ssh&amp;lt;/code&amp;gt; 目录或 &amp;lt;code&amp;gt;authorized_keys&amp;lt;/code&amp;gt; 文件的权限设置过宽，SSH 服务会直接拒绝读取它们。&lt;br /&gt;
&lt;br /&gt;
* 行动： 通过 VNC 控制台登录（或使用密码登录，如果你还没禁用密码的话）。&lt;br /&gt;
* 修复核心权限： 严格执行以下权限锁定命令：&lt;br /&gt;
&lt;br /&gt;
 # 设定当前用户根目录的权限 (不能开放给所有用户组写入)&lt;br /&gt;
 chmod 750 ~&lt;br /&gt;
 &lt;br /&gt;
 # 设定 .ssh 文件夹的权限：仅所有者可读写执行 (rwx------)&lt;br /&gt;
 chmod 700 ~/.ssh&lt;br /&gt;
 &lt;br /&gt;
 # 设定公钥记录文件的权限：仅所有者可读写 (rw-------)&lt;br /&gt;
 chmod 600 ~/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
修复权限后，通常无需重启 sshd，直接在本地重新尝试连接即可。&lt;br /&gt;
&lt;br /&gt;
== 3. 公钥粘贴格式错误 ==&lt;br /&gt;
在将本地的 &amp;lt;code&amp;gt;.pub&amp;lt;/code&amp;gt; 公钥内容复制到 VPS 的 &amp;lt;code&amp;gt;~/.ssh/authorized_keys&amp;lt;/code&amp;gt; 文件时，不小心在中间多加了一个换行符，或者复制漏了最后一个字符，都会导致指纹无法匹配。&lt;br /&gt;
&lt;br /&gt;
* 修复： 在 VNC 中使用 &amp;lt;code&amp;gt;cat ~/.ssh/authorized_keys&amp;lt;/code&amp;gt; 查看。正常情况下，一个公钥必须完完整整地占据单独的一行（通常以 &amp;lt;code&amp;gt;ssh-rsa&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;ssh-ed25519&amp;lt;/code&amp;gt; 开头，以你的电脑用户名结尾）。如果断行了，使用 &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt; 编辑器将其退格拼接到同一行。&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 五、 特殊疑难杂症：Host key verification failed ==&lt;br /&gt;
这是一个非常经典的报错。表现为你在本地终端输入 &amp;lt;code&amp;gt;ssh root@IP&amp;lt;/code&amp;gt; 后，弹出一大段充满感叹号的警告提示，包含 &amp;quot;WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!&amp;quot;。&amp;lt;blockquote&amp;gt;原理解析：&lt;br /&gt;
&lt;br /&gt;
每次你连接一台全新的 VPS 时，你的本地电脑都会悄悄把这台服务器的唯一指纹记录在本地的一个叫 &amp;lt;code&amp;gt;known_hosts&amp;lt;/code&amp;gt; 的文件里。&lt;br /&gt;
&lt;br /&gt;
如果你把这台 VPS 重装了操作系统，它的服务器指纹就变了。当你再次连接相同的 IP 时，你的本地电脑一对比：“哎？IP 没变，但指纹不对！这可能是一个伪造的钓鱼服务器！” 于是出于保护机制，强制掐断了连接。&amp;lt;/blockquote&amp;gt;&#039;&#039;&#039;修复 (本地电脑操作)：&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
你只需要告诉你的本地电脑：“我知道它重装了，把旧的指纹删掉吧”。&lt;br /&gt;
&lt;br /&gt;
如果你使用的是 Windows/Mac/Linux 的终端，直接执行以下命令（将 IP 替换为你的 VPS IP）：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh-keygen -R 你的VPS_IP地址&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;系统会提示 &amp;lt;code&amp;gt;Host 你的VPS_IP地址 has been removed&amp;lt;/code&amp;gt;。再次发起 SSH 连接，输入 &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; 接受新的指纹即可。&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 六、 终极救援原则：永远相信 VNC ==&lt;br /&gt;
在这篇指南中，我们反复提到了 VNC Console (或称 KVM/Serial Console)。&lt;br /&gt;
&lt;br /&gt;
请记住一条铁律：只要你的 VPS 还在开机状态，无论 SSH 怎么崩溃、无论防火墙怎么乱拦截，VNC 控制台永远能让你以物理机插显示器的方式进入系统。&lt;br /&gt;
&lt;br /&gt;
VNC 是不依赖于系统网络配置的底层带外管理工具。如果你尝试了上述所有方法依然无果，请静下心来：&lt;br /&gt;
&lt;br /&gt;
# 打开服务商面板的 VNC。&lt;br /&gt;
# 输入 &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; 和密码（由于 VNC 是模拟物理键盘，可能不支持复制粘贴，且注意排查输入法的大写锁定）。&lt;br /&gt;
# 使用 &amp;lt;code&amp;gt;ping 8.8.8.8&amp;lt;/code&amp;gt; 测试外网连通性。&lt;br /&gt;
# 使用 &amp;lt;code&amp;gt;ip addr&amp;lt;/code&amp;gt; 检查网卡是否正常获取了 IP 地址。&lt;br /&gt;
# 检查系统日志 &amp;lt;code&amp;gt;tail -n 50 /var/log/auth.log&amp;lt;/code&amp;gt; 来寻找 SSH 拒绝登录的蛛丝马迹。&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 结语与下一步行动 ==&lt;br /&gt;
SSH 故障排查是一个建立排错逻辑的绝佳过程。当你能够熟练地从网络层、服务层、认证层逐一剥丝抽茧定位问题时，你就不再是一个只会复制粘贴命令的新手，而是初步具备了独立解决问题的架构师思维。&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%A6%82%E4%BD%95%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA_IT-Tools_%E5%85%A8%E8%83%BD%E5%B7%A5%E5%85%B7%E7%AE%B1&amp;diff=1350</id>
		<title>如何在搬瓦工VPS搭建一个 IT-Tools 全能工具箱</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%A6%82%E4%BD%95%E5%9C%A8%E6%90%AC%E7%93%A6%E5%B7%A5VPS%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AA_IT-Tools_%E5%85%A8%E8%83%BD%E5%B7%A5%E5%85%B7%E7%AE%B1&amp;diff=1350"/>
		<updated>2026-02-04T06:01:54Z</updated>

		<summary type="html">&lt;p&gt;Sky：​如何在搬瓦工VPS搭建一个 IT-Tools 全能工具箱&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
IT-Tools 是 GitHub 上非常热门的一款开发者工具集合，它包含 token 生成器、哈希计算、UUID 生成、二维码生成、JSON 格式化等数十种实用功能。&lt;br /&gt;
&lt;br /&gt;
本文将教你如何在全新的 Debian 或 Ubuntu 服务器上，使用 Docker Compose 快速部署 IT-Tools。&lt;br /&gt;
&lt;br /&gt;
== 1. 服务器环境准备 ==&lt;br /&gt;
首先，通过 SSH 连接到您的 Linux 服务器。作为全新的系统，我们需要先更新软件源并升级系统组件，以确保系统的安全性和稳定性。&lt;br /&gt;
 # 更新软件包列表并升级已安装的软件&lt;br /&gt;
 apt update &amp;amp;&amp;amp; apt upgrade -y&lt;br /&gt;
 &lt;br /&gt;
 # 安装基础必备组件（curl用于下载脚本，vim/nano用于编辑文件）&lt;br /&gt;
 apt install curl vim -y&amp;lt;/code&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
![[File:F321.png|thumb]]&lt;br /&gt;
![[File:2bd0.png|thumb]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 安装 Docker 环境 ==&lt;br /&gt;
为了方便管理和部署，我们使用官方的一键安装脚本来安装 Docker 及其 Compose 插件。此脚本同时适用于 Debian 和 Ubuntu 系统。&lt;br /&gt;
 # 下载并运行 Docker 官方安装脚本&lt;br /&gt;
 curl -fsSL &#039;&#039;&#039;https&#039;&#039;&#039;://get.docker.com | bash&lt;br /&gt;
 &lt;br /&gt;
 # 启动 Docker 服务并设置为开机自启&lt;br /&gt;
 systemctl start docker&lt;br /&gt;
 systemctl enable docker&lt;br /&gt;
 &lt;br /&gt;
 # 验证 Docker Compose 是否安装成功&lt;br /&gt;
 docker compose version&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;如果输出类似 &amp;lt;code&amp;gt;Docker Compose version v2.x.x&amp;lt;/code&amp;gt; 的信息，说明环境安装成功。&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
![[File:437a.png|thumb]]&lt;br /&gt;
![[File:886.png|thumb]]&lt;br /&gt;
![[File:F9b41.png|thumb]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. 创建部署目录 ==&lt;br /&gt;
为了保持服务器文件结构整洁，建议为每一个 Docker 服务创建一个独立的目录。我们将 IT-Tools 部署在 &amp;lt;code&amp;gt;/opt/it-tools&amp;lt;/code&amp;gt; 目录下。&lt;br /&gt;
 # 创建目录&lt;br /&gt;
 mkdir -p /opt/it-tools&lt;br /&gt;
 &lt;br /&gt;
 # 进入目录&lt;br /&gt;
 cd /opt/it-tools&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:4de9.png|center|thumb|999x999px]]&lt;br /&gt;
&lt;br /&gt;
== 4. 编写 Docker Compose 配置文件 ==&lt;br /&gt;
接下来，我们需要创建 &amp;lt;code&amp;gt;docker-compose.yml&amp;lt;/code&amp;gt; 文件来定义容器的运行参数。&lt;br /&gt;
&lt;br /&gt;
使用 &amp;lt;code&amp;gt;vim&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt; 创建并编辑文件：&lt;br /&gt;
 &#039;&#039;&#039;vim&#039;&#039;&#039; docker-compose.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
请将以下内容复制并粘贴到编辑器中：&lt;br /&gt;
 &#039;&#039;&#039;version&#039;&#039;&#039;: &#039;3.8&#039;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;services&#039;&#039;&#039;:&lt;br /&gt;
   &#039;&#039;&#039;it-tools&#039;&#039;&#039;:&lt;br /&gt;
     &#039;&#039;&#039;image&#039;&#039;&#039;: corentinth/it-tools:latest&lt;br /&gt;
     &#039;&#039;&#039;container_name&#039;&#039;&#039;: it-tools&lt;br /&gt;
     &#039;&#039;&#039;restart&#039;&#039;&#039;: unless-stopped&lt;br /&gt;
     # 资源限制（可选，防止占用过多资源）&lt;br /&gt;
     &#039;&#039;&#039;deploy&#039;&#039;&#039;:&lt;br /&gt;
       &#039;&#039;&#039;resources&#039;&#039;&#039;:&lt;br /&gt;
         &#039;&#039;&#039;limits&#039;&#039;&#039;:&lt;br /&gt;
           &#039;&#039;&#039;cpus&#039;&#039;&#039;: &#039;0.50&#039;&lt;br /&gt;
           &#039;&#039;&#039;memory&#039;&#039;&#039;: 512M&lt;br /&gt;
     &#039;&#039;&#039;ports&#039;&#039;&#039;:&lt;br /&gt;
       # 冒号左边是宿主机端口，可以根据需要修改&lt;br /&gt;
       # 冒号右边是容器内部端口，请勿修改&lt;br /&gt;
       - &amp;quot;8080:80&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;参数说明：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;: 使用官方最新镜像 &amp;lt;code&amp;gt;corentinth/it-tools:latest&amp;lt;/code&amp;gt;。&lt;br /&gt;
* &amp;lt;code&amp;gt;restart: unless-stopped&amp;lt;/code&amp;gt;: 容器退出时自动重启，除非被手动停止。&lt;br /&gt;
* &amp;lt;code&amp;gt;ports&amp;lt;/code&amp;gt;: 将服务器的 &amp;lt;code&amp;gt;8080&amp;lt;/code&amp;gt; 端口映射到容器的 &amp;lt;code&amp;gt;80&amp;lt;/code&amp;gt; 端口。如果您想使用其他端口（如 9090），请修改为 &amp;lt;code&amp;gt;&amp;quot;9090:80&amp;quot;&amp;lt;/code&amp;gt;。&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;保存并退出方法（如果使用 Vim）：&lt;br /&gt;
&lt;br /&gt;
# 按 &amp;lt;code&amp;gt;ESC&amp;lt;/code&amp;gt; 键。&lt;br /&gt;
# 输入 &amp;lt;code&amp;gt;:wq&amp;lt;/code&amp;gt; 并回车。&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
![[File:4678.png|thumb]]&lt;br /&gt;
![[File:67eef.png|thumb]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 5. 启动服务 ==&lt;br /&gt;
确认配置文件无误后，使用以下命令拉取镜像并启动容器：&lt;br /&gt;
 # 在后台启动容器&lt;br /&gt;
 &#039;&#039;&#039;docker&#039;&#039;&#039; compose up -d&amp;lt;/code&amp;gt;&lt;br /&gt;
等待命令执行完毕。您可以使用以下命令查看容器运行状态：&lt;br /&gt;
 # 查看容器运行日志&lt;br /&gt;
 docker compose logs -f&lt;br /&gt;
 &lt;br /&gt;
 # 或者查看容器状态&lt;br /&gt;
 docker compose ps&amp;lt;/code&amp;gt;&lt;br /&gt;
如果状态显示为 &amp;lt;code&amp;gt;Up&amp;lt;/code&amp;gt;，说明服务已成功启动。&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
![[File:3d8ec.png|thumb]]&lt;br /&gt;
![[File:78964.png|thumb]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. 放行防火墙端口 ==&lt;br /&gt;
如果你的服务器安装了防火墙软件，需要放行刚才配置的端口（本文以 &amp;lt;code&amp;gt;8080&amp;lt;/code&amp;gt; 为例）。&lt;br /&gt;
&lt;br /&gt;
如果你使用的是 UFW 防火墙：&lt;br /&gt;
 # 放行 8080 端口&lt;br /&gt;
 &#039;&#039;&#039;ufw&#039;&#039;&#039; allow 8080/tcp&lt;br /&gt;
 &#039;&#039;&#039;ufw&#039;&#039;&#039; reload&amp;lt;/code&amp;gt;&lt;br /&gt;
== 7. 访问测试 ==&lt;br /&gt;
部署完成！现在您可以通过浏览器访问 IT-Tools 工具箱了。&lt;br /&gt;
&lt;br /&gt;
访问地址：&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://服务器IP:8080&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
打开后，您将看到一个包含各类开发工具的仪表盘。您可以根据需要点击左侧的爱心图标，将常用的工具收藏到首页。&lt;br /&gt;
[[File:2733.png|center|thumb|999x999px]]&lt;br /&gt;
&lt;br /&gt;
== 8. 常用工具 ==&lt;br /&gt;
&lt;br /&gt;
* UUIDS生成器&lt;br /&gt;
&lt;br /&gt;
[[File:6e7e911.png|center|thumb|999x999px]]&lt;br /&gt;
&lt;br /&gt;
* 文本加/解密&lt;br /&gt;
&lt;br /&gt;
[[File:62d77.png|center|thumb|999x999px]]&lt;br /&gt;
&lt;br /&gt;
* 二维码生成器&lt;br /&gt;
&lt;br /&gt;
[[File:7d60.png|center|thumb|999x999px]]&lt;br /&gt;
还有很多其他的工具（都在左侧边栏里）可以自己去熟悉了解一下。&lt;br /&gt;
----后续维护：&lt;br /&gt;
&lt;br /&gt;
如果后续想要更新 IT-Tools 到最新版本，只需在安装目录下执行以下命令：&lt;br /&gt;
 &#039;&#039;&#039;cd&#039;&#039;&#039; /&#039;&#039;&#039;opt&#039;&#039;&#039;/it-tools&lt;br /&gt;
 docker compose pull&lt;br /&gt;
 docker compose &#039;&#039;&#039;up&#039;&#039;&#039; -d&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Category:500 常见应用指南 — Application Guides]]&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:7d60.png&amp;diff=1349</id>
		<title>File:7d60.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:7d60.png&amp;diff=1349"/>
		<updated>2026-02-04T05:59:12Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:62d77.png&amp;diff=1348</id>
		<title>File:62d77.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:62d77.png&amp;diff=1348"/>
		<updated>2026-02-04T05:58:32Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:6e7e911.png&amp;diff=1347</id>
		<title>File:6e7e911.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:6e7e911.png&amp;diff=1347"/>
		<updated>2026-02-04T05:57:05Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;4&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:2733.png&amp;diff=1346</id>
		<title>File:2733.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:2733.png&amp;diff=1346"/>
		<updated>2026-02-04T05:56:04Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:78964.png&amp;diff=1345</id>
		<title>File:78964.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:78964.png&amp;diff=1345"/>
		<updated>2026-02-04T05:55:23Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:3d8ec.png&amp;diff=1344</id>
		<title>File:3d8ec.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:3d8ec.png&amp;diff=1344"/>
		<updated>2026-02-04T05:53:39Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:67eef.png&amp;diff=1343</id>
		<title>File:67eef.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:67eef.png&amp;diff=1343"/>
		<updated>2026-02-04T05:52:59Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:4678.png&amp;diff=1342</id>
		<title>File:4678.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:4678.png&amp;diff=1342"/>
		<updated>2026-02-04T05:52:39Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:4de9.png&amp;diff=1341</id>
		<title>File:4de9.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:4de9.png&amp;diff=1341"/>
		<updated>2026-02-04T05:51:22Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:F9b41.png&amp;diff=1340</id>
		<title>File:F9b41.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:F9b41.png&amp;diff=1340"/>
		<updated>2026-02-04T05:50:41Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:886.png&amp;diff=1339</id>
		<title>File:886.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:886.png&amp;diff=1339"/>
		<updated>2026-02-04T05:50:04Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:437a.png&amp;diff=1338</id>
		<title>File:437a.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:437a.png&amp;diff=1338"/>
		<updated>2026-02-04T05:49:50Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:2bd0.png&amp;diff=1337</id>
		<title>File:2bd0.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:2bd0.png&amp;diff=1337"/>
		<updated>2026-02-04T05:48:39Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:F321.png&amp;diff=1336</id>
		<title>File:F321.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:F321.png&amp;diff=1336"/>
		<updated>2026-02-04T05:45:37Z</updated>

		<summary type="html">&lt;p&gt;Sky：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1&lt;/div&gt;</summary>
		<author><name>Sky</name></author>
	</entry>
</feed>