海外主机买完连不上,先查是不是防火墙没放行 22 端口,或者这台机器压根没公网 IP。官方文档给的落地顺序就五步:创建实例、配防火墙放行端口、配好SSH访问、连上去、再部署服务。连接Linux虚拟机之前,必须先有放行TCP 22端口的防火墙规则,同时用OS Login或metadata-based SSH keys把SSH访问配好。这两件事没做,后面敲什么命令都连不上。
对出海做站的人来说,这台机器是站点的地基,不是买完就不管的订阅服务。域名解析、装环境、上线,全都建立在你能用SSH登录这台机器这个前提上。挑机器看 海外vps推荐,想先弄清楚这台机器能拿来干什么看 VPS可以干什么。
大陆这边能不能直接开通、付款走哪条通道,各家的规则不一样,下单前在控制台看一遍。这篇只讲机器到手之后怎么跑起来。
- 落地是五步:创建实例、放行端口、配 SSH、连上去、部署服务
- 连接之前,22 端口的入站 TCP 规则必须先放行
- 连接入口有四种:控制台点 SSH、gcloud CLI、OpenSSH、PuTTY
- 密码登录不如密钥对,官方明确不推荐
一台刚买回来的海外主机,怎么从连不上变成能打开网页,每一步在哪个界面做、哪些设置错了要返工,下面一次说清。
本文目录
海外主机是什么:它是一台跑在物理机上的虚拟机,不是独立机器
云服务器是跑在物理服务器上的虚拟机,用来运行操作系统和计算机程序。这句话来自 Hetzner 的创建文档。也就是说,你买的不是一台摆在机房里、整块主板都归你的机器,而是物理机上划出来的一块,带一个能从外面访问的地址。
配置单上写的核数和内存,意思是这台虚拟机分到这些资源。同一台物理机上还有别人的虚拟机,你看不到也管不到。这一点决定了后面所有操作都在「实例」这个层面做,不是去碰硬件。
外部 IP 分静态和临时,要固定地址得先申请
外部 IP 地址分静态和临时两种。默认给你的一般是临时地址,机器删了,地址就回池子里,下次再建可能换一个。如果实例需要固定不变的外部 IP 地址,就先获取一个静态外部 IP,再把它分配给已有实例,或者在创建新实例时直接分配。
还有一条路是把资源上已有的临时外部 IP 提升为静态外部 IP。这样即使这个资源被删掉,地址还留着。对已经跑起来、不想换 IP 的机器,这条更省事。
主机名和 DNS:创建时按 VM 名称生成内部 DNS 名
创建 VM 的时候,Google Cloud 会用 VM 名称生成一个内部 DNS 名称。你不指定自定义主机名,就用这个自动生成的名称作为提供给 VM 的主机名。
指定了自定义主机名,它照样会建内部 DNS 名称,而且内部 DNS 记录解析到内部名称,不是你的自定义主机名。自定义主机名还得在对应区域建 DNS 记录,比如用 Cloud DNS。这两件事是分开的,别以为填了自定义主机名就自动生效。
这台机器和独立服务器在权限、隔离上的差别,海外服务器vps是什么 讲得更细。
买完先确认这四项,再动手连
机器创建出来,先别急着敲命令。下面这四项里任何一项不对,后面都会白忙一场。
有没有公网 IP:没有公网 IP 就连不上
Azure 那篇连接文档讲的是有公网 IP 的 Linux 虚拟机,没有公网 IP 要另走 Bastion 服务。所以在门户左侧点 Overview,看 Networking 那一栏 Public IP address 旁边有没有地址。有地址才谈得上从本机 SSH 过去。
22 端口放行了没有:VPC 里要有对应规则
Google Cloud 要求在 VPC 网络里配一条防火墙规则,放行 22 端口的入站 TCP 流量,比如 default-allow-ssh。这条规则不在,客户端会一直停在连接阶段。这种停跟密码错、密钥不对不是一回事,报出来的提示不一样,看到超时就该想到这条规则。
SSH 密钥和系统镜像,创建那一步先选好
Hetzner 的创建文档写了两件事。服务器创建完成之后,不能再通过它的 Console 加 SSH 密钥,还能走 CLI 加。系统镜像在服务器创建之后可以改,但磁盘上之前的所有数据都会丢。
这两条合起来的意思很简单:密钥创建时就选上,镜像创建时就选对。选成 Debian 想要 Ubuntu,趁机器上还没东西的时候重装最省事,等装了一堆东西再改就是清盘重来。
选机器之前要对比的东西,国外vps租用怎么选 里按用途分了几种情况。
第一步:用 SSH 连上去,四种入口按手头工具选
连上去有四种入口,作用一样,适合的场景不一样。临时看一眼用控制台最快,长期用同一台机器的更适合命令行。四种说到底都是怎么连的问题,VPS服务器租用怎么连 可以对着看。

控制台点 SSH:Compute Engine 替你管密钥
进入 VM instances 页面,在要连接的那台实例那一行点 SSH,浏览器里会开一个终端窗口。这种方式 Compute Engine 会替你管理 SSH 密钥,而且控制台建的是临时密钥,这次会话结束就没了。临时查个状态、跑一两条命令,用它最快。
gcloud CLI:建的是持久密钥
在控制台激活 Cloud Shell,运行下面这一行:
gcloud compute ssh INSTANCE_NAME --project=PROJECT_ID --zone=ZONE
三个占位符换成你自己的实例名、项目 ID、可用区。用 gcloud 命令行连的时候,Compute Engine 建的是持久 SSH 密钥,存在本机,下次还能用。要反复登录同一台机器,走这条。
OpenSSH 客户端:先加公钥,再 ssh -i
先把公钥添加到 VM,在控制台找到这台机器的外部 IP,再运行:
ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP
Azure 那边多一步。建机器时下载的 .pem 私钥,先用 chmod 400 设成只读,再连:
ssh -i ~/Downloads/myKey.pem azureuser@10.111.12.123
私钥权限太开放,SSH 会直接拒绝使用。这一步不做,命令跑出来就是一句权限相关的报错。
PuTTY:Host Name 填用户名加外部 IP
在 Host Name 字段按 USERNAME@EXTERNAL_IP 的格式填,左边进 Connection > SSH > Auth > Credentials,选你的 .ppk 私钥文件,点 Open。PuTTY 要的是 .ppk,拿到的如果是 .pem,得先转格式再选。
本地是 Windows 7 或更早的系统,默认不带 Win32 OpenSSH,可以装 WSL,或者用浏览器里的 Cloud Shell。这一步只是换工具,后面的流程不变。连不上先别怀疑命令,回上一节确认 22 端口规则和公网 IP,这两个对上了,再看密钥。
第二步:防火墙和端口,先放行再谈部署
连上了只是能进这台机器。要让外面的人通过浏览器访问你的网站,80 端口得放行,以后配 HTTPS 的时候思路一样。这一步在建机器的时候就能一起做完,不用事后再找。

Azure 建实例时勾 SSH (22) 和 HTTP (80)
在创建 Linux 虚拟机的入站端口规则里,选 Allow selected ports,下拉里同时选 SSH (22) 和 HTTP (80)。这两项勾上了,机器建好就能连、能访问网页。建完再补不是不行,只是多绕一圈。
Google Cloud 建实例时勾 Allow HTTP traffic
创建 Linux VM 的时候,在 Firewall 部分勾 Allow HTTP traffic,再点 Create。这一勾就是给 80 端口开入口,不勾,nginx 装得再对,浏览器也打不开。
事后补规则:Networking 里看有没有 TCP 22
Azure 补规则在 VM 页面左侧选 Networking,先看列表里有没有允许你所用电脑 IP 的 TCP 22 端口规则。没有就点 Add inbound port rule,Service 选 SSH,Name 填 SSH,点 Add。
端口没开的表现是连接超时,不是密码错。看到超时就去查规则,别在那儿一遍遍输密码,输一百遍也进不去。
第三步:域名解析指向这台主机
机器能连、端口通了,下一步是把域名指过来。这一步牵扯两套系统,域名在注册商那边,解析记录在 DNS 服务商那边,中间靠一条指向外部 IP 的记录连起来。
域名注册 1 到 10 年,注册商向注册局核实可用性
个人、企业或组织都可以通过注册商注册域名,期限是 1 到 10 年。注册商先向管理对应 TLD 的注册局核实这个域名可不可用,可用就向注册局注册,注册局把它加进域名注册数据库。这个过程你只能等,注册完拿到的是域名的管理权,不是解析立刻生效。
自定义主机名仍要在对应区域建 DNS 记录
回到前面说的自定义主机名。就算你在创建实例时填了,Google Cloud 还是会建内部 DNS 名称,内部 DNS 记录解析到内部名称,你得在对应区域建一条自己的 DNS 记录,比如用 Cloud DNS,把它指向这台机器的外部 IP。
静态 IP 一个地址同一时间只能给一个资源
域名指向的是一个固定地址,那就得是静态外部 IP。静态地址有两个限制:同一时间只能有一个资源使用,名称建完之后不能改。所以起名字的时候按用途写,别随手打个 test1,以后看着别扭也改不了。
解析没生效,先查记录里的 IP 是不是这台机器当前的外部 IP。机器删过、重建过,IP 很可能已经变了,记录还指着旧的,访问自然到不了。这一步对上了,再等 DNS 缓存过去。
第四步:部署一个最小可用服务,验证这台机器能上线
到这一步,机器能连、端口开着、域名指着它。接下来装一个东西上去,把这条链从头到尾走一遍,确认整条路是通的。
在 SSH 会话里装 nginx
连上 SSH 之后,先跑 sudo apt-get -y update,再跑 sudo apt-get -y install nginx。两条命令跑完,nginx 就装好了,默认配置会占着 80 端口。这是 Azure 快速入门里的做法,用的是 Ubuntu Server 22.04 LTS 镜像。
浏览器访问公网 IP,看默认欢迎页
打开浏览器,地址栏直接填这台机器的公网 IP,不用加端口。能看到默认的 NGINX 欢迎页,就说明三件事同时成立:机器在运行、22 端口通、80 端口也通。
看到欢迎页就留下,看不到回去查 80 端口
看到欢迎页,这台机器可以留下来继续用,后面装 WordPress、放静态站,都是在这个基础上加。看不到,回第 4 节查 80 端口规则,再回第 2 节查公网 IP 在不在。
两步都对还是打不开,就看 nginx 是不是真装上了,重跑一次安装命令,看输出里有没有报错。这台机器的配置撑不撑得住后面要放的东西,是另一件事,要换一台更合适的可以看 高性价比海外云服务器。
连不上、打不开,按这个顺序排查
排查有顺序。先查 22 端口规则,再查有没有公网 IP,再查 VM 是不是在运行,最后查私钥权限。四步下来,连不上的情况基本都能定位到具体哪一环。
四步具体在哪看
Azure 这边的路径:VM 页面左侧选 Networking,看有没有允许你所用电脑 IP 的 TCP 22 端口规则;回 Overview,看 Public IP address 旁边有没有地址;同一个页面 Essentials 部分看状态是不是 Running,不是就点顶部 Start;本机这边跑 chmod 400 把私钥设成只读。
首次连接必须验证主机指纹
第一次连一台机器,客户端会显示一个指纹,问你接不接受。直接点接受很省事,但那样会把自己暴露在中间人攻击里,所以官方要求始终验证主机指纹,而且只需要在客户端第一次连接时验证一次。
Azure 上可以在门户的 Run Command 里跑 ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}',拿到的指纹跟客户端显示的比一下,一样再接受。
密码登录不如密钥对,官方不推荐
Azure 明确写了,密码认证不如 SSH 密钥对安全,不推荐。图省事开密码登录,等于给这台机器留一个可以被反复试的口子。密钥对多花几分钟,后面省心。
官方排查入口
Google Cloud 的文档把连接失败的诊断指向 Troubleshooting SSH,Azure 指向 Troubleshoot SSH connections。四步走完还是连不上,就拿着报错原文去这两份文档里对。
选机器之前想先看清各家有哪些限制,国外vps评测怎么选 可以先看。
要花多少钱、有哪些硬限制:一张表看清
能把钱算清楚的数字,官方页里就这几个。剩下的按你下单那天控制台显示的价格走。
| 项目 | 数字 / 限制 | 怎么用这条 |
|---|---|---|
| Google Cloud 新客户免费额度 | $300 | 用来跑测试和部署工作负载,能撑多久看你开几台、开多大 |
| Windows Server 镜像 | 额外收费,不含在免费试用内 | 要用 Windows 就得单独算这笔钱 |
| 域名注册期限 | 1 到 10 年 | 按项目周期决定一次买几年 |
| Hetzner 备份槽位 | 每台 7 个,每日自动副本 | 开启后磁盘每天存一份,最多 7 份 |
| 静态外部 IP | 一个地址同一时间只给一个资源 | 一台机器一个地址,别指望两台共用 |
表里这五条能帮你判断规模,判断不了账单。具体套餐价、续费价,按下单那天控制台显示的数字算。各家的延迟也不在本文讨论范围,自己开一台机器用 ping 和实际访问试更实在。
付款通道怎么走,可以看 支持支付宝的国外VPS。
用 AI 整理官方文档和勾选清单,有三件事人要亲手做
AI 在这件事里能帮的地方很具体,不是替你点控制台,是把散在几份文档里的字段、命令、限制压成一张能对着做的表。省下来的是翻页和比对的时间。
AI 能帮的四步
- 把四种连接方式整理成一张对照表:控制台 SSH、gcloud compute ssh、OpenSSH 客户端、PuTTY,按适用场景、需要的密钥类型、命令或入口分列。
- 按你选的厂商和系统生成创建实例的勾选清单。把 Ubuntu 24.04 LTS、Ubuntu Server 22.04 LTS、Windows Server 2019 Datacenter 这些版本名直接给它,让它逐项对应官方页里的字段。
- 把连不上、端口没开、密钥权限不对这几类情况按官方排查顺序整理成排查树:先防火墙端口,再公网 IP,再 VM 运行状态,最后私钥权限。
- 把域名解析这部分整理成一张「谁解析到谁」的文字版:外部 IP、内部 DNS 名称、自定义主机名、Cloud DNS 记录四者的关系。
三条能直接照抄的提示词
下面三条是本文给的示例,不是官方模板,拿去改改就能用。
- 「按 Google Cloud 官方文档,把连接 Linux VM 的四种方式(控制台 SSH、gcloud compute ssh、OpenSSH 客户端、PuTTY)整理成一张表,列:适用场景、需要的密钥类型、命令或入口、官方原句出处。不要补充文档里没有的步骤。」
- 「我按 Azure 快速入门创建了 Ubuntu Server 22.04 LTS 的 Linux VM,SSH 连不上。按官方排查顺序列出检查项:公网 IP 是否存在、VM 是否 Running、22 端口入站规则是否存在、私钥权限是否为 chmod 400。每项写清在门户哪个位置看。」
- 「把 Hetzner 创建服务器页里的可配置项(Type、Location、Image、Networking、SSH key、Volumes、Firewalls、Backups、Placement Groups、Labels、Cloud config、Name)整理成一张勾选清单,每项写官方限制条件,例如名称规则、标签 63 字符、Cloud config 32KiB。」
人要亲手做的三件事
第一件,在云厂商控制台创建实例时,亲手填实例名称、选镜像版本、勾选防火墙放行项,比如 Google Cloud 那边的 Allow HTTP traffic,Azure 那边的 SSH (22) 和 HTTP (80),然后点 Create。这三项填错,后面全白搭。
第二件,在控制台的 VM 列表里点那一行的 SSH,或者在本机终端跑 ssh 命令,看能不能连上。连不上就按前面那四步查端口、公网 IP、运行状态。
第三件,连上之后跑安装命令,再用浏览器访问公网 IP,看有没有出现默认欢迎页。看到就留着,看不到就按第 7 节的顺序查下去,再决定这台继续用还是重建。
官方文档里的字段和限制散在好几页,猎者出海的AI Agent 能先把这些条款抓出来对照一遍,出一份初稿清单,字段对不对还得你对着控制台一项项核。它不替你点按钮,也不替你看欢迎页。
常见问题
海外主机没有公网 IP 能连吗
按常规 SSH 连不上。Azure 的连接文档讲的就是有公网 IP 的机器,没有公网 IP 要走 Bastion 服务。所以创建的时候先确认带公网 IP,建完才发现没有,只能另找入口。
服务器建完还能加 SSH 密钥吗
看厂商。Hetzner 的 Console 不行,CLI 可以。最省事的做法是创建那一步就把密钥选上,别等连不上了再补。
改系统镜像会丢数据吗
会。磁盘上之前的数据全部丢失。要换镜像,趁机器上还没东西的时候换,或者先把数据弄出来。
静态 IP 能改名字吗
不能。名称建完就固定。所以起名时按用途写,别用临时想出来的名字。
自动关机时区为什么不对
Azure 自动关机的时区下拉默认是 UTC。要按你自己的时间关,就得手动改成你所在的时区,不然它按 UTC 到点关。
这条链走通一次,换厂商、换系统都是同一套顺序:创建的时候把端口和密钥定好,连上去,装个东西验证,再回头接域名。真正卡人的是前两步,22 端口和公网 IP。这两个记牢,后面顺得多。

发表评论