系统与运维

第一次 SSH 登录:地址、端口、用户和指纹

VPSMap 编辑整理 · 内容更新 2026-09-26 · 16 分钟阅读 · 纯文本版本

获取一台全新的 Linux VPS 后,通过 SSH(Secure Shell)建立加密终端连接是所有运维工作的起点。许多初学者在第一次尝试连接时频繁遭遇超时或拒绝,核心原因往往是对服务商交付的参数机制缺乏理解,或是混淆了控制面板层与系统层之间的凭据。

本文将梳理首次 SSH 登录所需的四项核心要素,对比主流服务商(如 BandwagonHost 与 DMIT)在默认端口与初始凭据交付上的策略差异,详解主机指纹的安全验证逻辑,并提供排障与首登验证指南。


1. 梳理连接四要素:地址、端口、用户与凭据#

在本地终端发起连接之前,必须准确收集以下四项网络与认证参数:

要素说明常见取值与服务商差异
IP 地址服务器的公网 IPv4 地址在服务商实例详情面板获取。若采用双栈网络,也可使用分配的 IPv6 地址。
SSH 端口SSH 守护进程(sshd)监听的网络端口Linux 标准默认为 22。但 BandwagonHost(搬瓦工) 系统模板在交付时通常会分配一个五位数的随机高端口(如 28412),必须在 KiwiVM 控制面板中精确查阅;而 DMIT 的大部分官方模板默认维持标准的 22 端口。
登录用户名远程系统内部的账户名称全新服务器初始化时通常为最高管理员账户 root。部分定制化发行版(如 Debian/Ubuntu 云镜像)可能默认预置 debian 或 ubuntu 用户。
认证凭据证明客户端身份的密钥或口令SSH 密码或客户端对应的 SSH 私钥文件。

关键概念:三层凭据隔离#

初次管理云服务器时,务必明确以下三组账号密码处于不同的信任层级,不能互相混用:

  1. 客户中心账号(Billing/Client Portal):用于登录服务商官网、支付账单、提交工单及增退订服务。
  2. 实例管理面板密码(如 BandwagonHost KiwiVM):针对底层虚拟化环境的独立控制台密码,用于开机、关机、挂载 ISO 及重启系统。
  3. 系统操作系统密码(OS root Password):运行在 VPS 内部 Linux 系统的超级管理员密码,仅在系统运行时有效。

2. 初始认证差异:密码直连与 SSH 密钥管理#

不同的服务商在实例交付的安全策略上存在明显分歧,直接决定了首次登录的准备步骤。

模式 A:密码直连模式(以 BandwagonHost 为例)#

BandwagonHost 的系统镜像普遍允许 root 密码直接登录:

  • 购买并开通实例后,初始 root 密码通常由系统随机生成并发送至注册邮箱,或直接显示在 KiwiVM 管理面板的初始信息中。
  • 若遗忘初始密码,无需重置官网账户,直接登录 KiwiVM 面板选择 Root password modification 即可在底层重置。
  • 端口注意:连接时切勿遗漏 KiwiVM 面板首页标注的 SSH Port,若盲目指定 22 端口,连接请求将直接超时。

模式 B:密钥优先模式(以 DMIT 为例)#

DMIT 在安全规范上更为严格,其大多数 Linux 镜像在交付时默认关闭了远程 root 密码认证,强制要求采用公钥认证:

  • 创建阶段注入:在订购或安装系统时,用户需在面板的 SSH Keys 资产库中绑定本地的 SSH 公钥。部署程序会自动将该公钥写入系统 /root/.ssh/authorized_keys。
  • 凭据修改的生效机制:若后续在 DMIT 实例控制面板的 Access 选项卡中重置了 root 密码或更换了 SSH 密钥,面板只是向元数据写入了配置。必须依据面板提示主动重启(Restart)实例,底层脚本才能在引导时重新生成系统凭据。
  • 私钥权限要求:使用私钥登录时,本地存放私钥文件的权限必须严格限制。在 macOS 或 Linux 本地终端中,若私钥权限过大(如 644),SSH 客户端会主动拒绝加载该密钥。连接前需执行:
bash
chmod 600 ~/.ssh/id_ed25519

3. 发起连接:命令行终端与图形客户端实操#

收集齐 IP、端口、用户及凭据后,即可在本地设备发起连接。无需第三方工具,主流操作系统(Windows 10/11 的 PowerShell / Windows Terminal、macOS 的 Terminal、各类 Linux 桌面)均内置了 OpenSSH 客户端。

命令行(OpenSSH)标准调用#

打开本地终端,依据认证方式选择对应命令(请将命令中的参数替换为实际值):

使用密码认证(常见于 BandwagonHost 的非标高端口):#

bash
ssh -p 28412 [email protected]
  • -p <端口>:指定连接的目标端口。若使用标准 22 端口,可省略该参数;使用非标端口时必须显式声明。
  • 输入密码时,终端为了防窥探完全不会显示任何字符或星号占位符。直接输入完整密码或从剪贴板粘贴一次后敲击回车即可,切勿以为终端卡死而连续重复粘贴。

使用私钥认证(常见于 DMIT 实例):#

bash
ssh -i ~/.ssh/id_ed25519 -p 22 [email protected]
  • -i <私钥路径>:显式指定本地匹配的私钥文件绝对或相对路径。

图形客户端配置要点#

若偏好使用 Termius、Xshell 或 PuTTY 等图形化管理工具,核心字段对应关系如下:

  • Host / Server IP:填入实例的公网 IPv4 地址,前后不要包含空格或 http:// 等协议头。
  • Port:填入对应的 SSH 端口(标准 22 或服务商分配的随机高端口)。
  • Username:输入 root。
  • Authentication Method:
    • 密码方式选择 Password。
    • 密钥方式选择 Public Key / Key Pair,并浏览导入本地持有的私钥文件(PuTTY 需使用 .ppk 格式,可通过 PuTTYgen 转换 OpenSSH 密钥)。

4. 首次连接的核心安全屏障:主机指纹验证#

当你第一次向目标服务器发起 SSH 连接时,终端必定会中断连接流程,并弹出如下安全交互提示:

text
The authenticity of host '[203.0.113.50]:28412 ([203.0.113.50]:28412)' can't be established.
ED25519 key fingerprint is SHA256:4t7XnO2Lz9yG7hQ8kF3mP1uW6vY0rE9bS5aD3cZ1xIo.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

为什么必须核对指纹?#

SSH 协议采用 TOFU(Trust On First Use,首次使用信任) 模型。第一次连接时,本地客户端与目标服务器之间尚未建立任何信任背书。服务器会将其持有的公钥哈希(即指纹)发送给本地,询问你是否确信该公钥属于你购买的真实 VPS。

如果盲目键入 yes,在极端网络环境下(如本地公共 Wi-Fi 遭受 ARP 欺骗或 DNS 劫持),流量可能已经被重定向至攻击者的伪造机器,输入的密码将被实时截获。

如何科学核验真实指纹?#

最规范的核验方式是在未接入公网 SSH 之前,通过服务商提供的带外管理控制台在服务器内部自行计算公钥哈希,与本地终端弹出的指纹进行比对:

  1. 进入带外控制台:
    • BandwagonHost:登录 KiwiVM 面板,找到左侧菜单中的 Interactive Console 或 Root shell-interactive。
    • DMIT:登录服务商控制面板,进入实例详情页,打开 Console(VNC 紧急控制台)。
  2. 在控制台中执行指纹生成命令:
    bash
    ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub
    (若本地提示的是 RSA 或 ECDSA 算法,将文件名相应替换为 ssh_host_rsa_key.pub 或 ssh_host_ecdsa_key.pub)
  3. 比对并确认: 控制台输出的 SHA256 哈希字符串若与本地终端弹出的指纹完全一致,即可放心地在本地终端输入 yes 并敲击回车。

一旦确立信任,本地 OpenSSH 客户端会自动将目标主机的 IP、端口和公钥记录在本地用户目录的 ~/.ssh/known_hosts 文件中。后续再次连接该服务器时,客户端将静默校验,不再重复弹窗提示。


5. 首登验证:四项基准只读巡检#

连接成功并看到 Linux 命令提示符(通常形如 root@hostname:~#)后,切忌立即盲目执行改端口、禁用密码等高危安全操作。首先应执行四条只读命令,核实基础软硬件环境与网络分配情况:

bash
whoami
hostnamectl
ip -4 addr show
uptime
  1. whoami:确认当前终端处于 root 超级用户上下文,具备系统维护权限。
  2. hostnamectl:核验操作系统发行版大版本(如 Debian 12、Ubuntu 24.04 LTS)、内核版本及底层架构(x86_64 或 aarch64),确保安装的系统与采购预期相符。
  3. ip -4 addr show:检查网卡绑定的内网与公网 IPv4 地址,确认网络接口已正常获取租约,且分配的 IP 与面板显示的公网 IP 准确映射。
  4. uptime:观察系统运行时间与平均负载(Load Average),确认这是一台刚初始化的新环境,未发生异常的后台死锁或频繁崩溃重启。

巡检完毕后,若需临时断开会话,输入 exit 或按下快捷键 Ctrl + D 即可安全登出。

运维安全底线:在完成后续的修改 SSH 端口、绑定普通用户 sudo 权限或停用密码登录等加固操作时,务必保持当前已经连接成功的终端窗口不关闭。另起一个新的本地终端窗口测试连接,确保新规则完全生效且能正常登入后,才可关闭初始维护会话。


6. 首登常见报错与决策处理#

首次登录如果遭遇阻碍,通常可通过客户端输出的报错信息快速定位瓶颈所在:

命令 / 配置
首次连接故障排查
 ├── Connection timed out ──> 网络阻断 / 端口填错(如搬瓦工填了默认 22) / 路由异常
 ├── Connection refused ────> 服务未监听该端口 / 防火墙 DROP / 系统未开机
 ├── Permission denied ─────> 密码错 / 密钥不匹配 / 镜像禁用了密码直登(如 DMIT)
 └── HOST IDENTIFICATION ───> 系统重装导致指纹变动 / IP 冲突,需针对性清理旧指纹

1. Connection timed out(连接超时)#

  • 现象:终端光标悬停数十秒后报错退出。
  • 根因:数据包未能抵达目标主机,或沿途防火墙丢弃了握手报文。
  • 排查路径:
    1. 核对端口是否填错。特别是 BandwagonHost 用户,核验是否将 KiwiVM 中的高端口误敲成了 22。
    2. 登录服务商面板,确认实例当前处于 Running(运行中) 状态,而非挂起或关机。
    3. 若 IP 处于异常路由状态,可利用服务商面板的停机迁移(Migration)或更换 IP 功能(注意:IP 处于黑名单时,服务商的跨数据中心迁移策略通常会受到限制)。

2. Connection refused(连接被拒绝)#

  • 现象:指令执行后瞬间返回 ssh: connect to host ... port ...: Connection refused。
  • 根因:目标服务器在线且网络可达,但目标端口上没有任何程序在监听,或者本地防火墙规则(如 iptables/nftables)重置拒绝了该连接。
  • 排查路径:
    1. 通过 KiwiVM 或 DMIT 的 Web Console 进入系统。
    2. 执行 ss -tulpn | grep ssh 确认 SSH 守护进程当前实际绑定的端口号。

3. Permission denied (publickey, password)#

  • 现象:输入密码后报错,或者甚至未提示输入密码便直接中断。
  • 根因:认证策略不被目标服务器接受。
  • 排查路径:
    1. 在 DMIT 镜像上极易发生:系统默认禁用了密码登录,此时若未使用 -i 指定私钥,服务器会直接以 Permission denied (publickey) 拒绝。
    2. 若已指定私钥依然被拒,核对当前使用的私钥是否与在面板后台绑定的公钥成对匹配。若在面板 Access 重新配置了密钥,确认实例是否已经执行过硬重启以载入配置。

4. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!#

  • 现象:终端打印大面积警告红字,提示远程主机身份已改变,连接被强行终止。
  • 根因:该 IP 之前曾被其他实例使用过,或者你刚刚在服务商面板中执行了重装系统(OS Reinstall)。重装会导致服务器内部重新生成全新的主机私钥,进而使指纹与本地 ~/.ssh/known_hosts 中保存的旧记录冲突。
  • 正确处理方法: 切勿盲目清空整个 known_hosts 文件,这会破坏其他存量服务器的安全信任锚点。使用内置工具针对特定目标记录进行定向清理:
    bash
    # 针对标准 22 端口
    ssh-keygen -R 203.0.113.50
    
    # 针对非标高端口(如 BandwagonHost 的 28412)
    ssh-keygen -R "[203.0.113.50]:28412"
    清理成功后,重新发起连接,核对新指纹并确认写入即可恢复正常访问。