1. 背景介绍
在远程服务器使用过程中,经常会遇到这样的情况:目标服务器位于内网,无法从本地电脑直接访问,但可以通过一台具有访问权限的中转服务器进行连接。
例如,本地电脑可以连接公网服务器 A,而目标服务器 B 只能通过服务器 A 访问。此时,可以利用 SSH 跳板机(Jump Host)机制建立连接,实现从本地电脑到目标服务器的间接访问。
本文介绍如何使用 Bitvise SSH Client 配置 SSH 跳板连接。配置完成后,可以直接连接目标服务器,并使用终端和 SFTP 等功能。
1.1 网络拓扑
整体连接过程如下:
text
本地 Windows 电脑
|
| SSH
v
服务器 A:中转服务器
|
| SSH
v
服务器 B:目标服务器
其中:
- 本地电脑:安装 Bitvise SSH Client。
- 服务器 A:能够从本地访问,并且具有访问服务器 B 的网络权限。
- 服务器 B:最终需要登录的目标服务器,可能位于内网。
需要注意的是,中转服务器不仅要能够访问目标服务器的 SSH 端口,其 SSH 服务端还需要允许相应的 TCP 转发操作。
1.2 软件与配置说明
本文使用 Bitvise SSH Client 9.66 作为示例。
提前准备以下信息:
| 配置项 | 中转服务器 A | 目标服务器 B |
|---|---|---|
| 服务器地址 | <JUMP_HOST> |
<TARGET_HOST> |
| SSH 端口 | <JUMP_PORT> |
<TARGET_PORT> |
| 用户名 | <JUMP_USER> |
<TARGET_USER> |
| 认证方式 | 密码或 SSH 密钥 | 密码或 SSH 密钥 |
以上均为占位符,实际配置时需要替换成自己的服务器信息。SSH 默认端口通常为 22,但应以服务器的实际配置为准。
2. 配置中转服务器 A
第一步是先在 Bitvise 中建立一个能够独立连接中转服务器 A 的配置文件。
2.1 填写服务器信息
打开 Bitvise SSH Client,在 Login 选项卡中填写以下内容:
| 配置项 | 填写内容 |
|---|---|
| Host | <JUMP_HOST> |
| Port | <JUMP_PORT> |
| Username | <JUMP_USER> |
| Initial method | 根据实际认证方式选择 |
| Password | 中转服务器对应的密码(如使用密码认证) |
如果使用 SSH 密钥认证,则根据服务器的认证要求配置相应的客户端密钥。
2.2 关闭代理设置
在主界面左下方点击 Proxy settings。
在弹出的窗口中,确保 Use proxy 未勾选。
因为当前配置连接的是中转服务器本身,不需要再经过其他代理。
点击 OK 返回主界面。
2.3 测试并保存配置
点击 Log in,测试是否可以正常连接服务器 A。
连接成功后,返回主界面,点击左侧的 Save profile as,将当前配置保存为:
text
jump-host.tlp
这个文件保存的是中转服务器 A 的连接配置,后续配置目标服务器 B 时会用到。
建议使用容易辨认的文件名,并将配置文件保存在安全的位置。
3. 配置目标服务器 B
中转服务器配置完成后,接下来创建目标服务器的独立连接配置。
3.1 创建新配置
在 Bitvise 主界面左侧点击 New profile,创建一个新的配置文件。
在 Login 选项卡中填写目标服务器 B 的信息:
| 配置项 | 填写内容 |
|---|---|
| Host | <TARGET_HOST> |
| Port | <TARGET_PORT> |
| Username | <TARGET_USER> |
| Initial method | 根据实际认证方式选择 |
| Password | 目标服务器对应的密码(如使用密码认证) |
这里填写的是最终目标服务器 B 的地址、用户名和认证信息,而不是中转服务器 A 的信息。
对于只能通过中转服务器访问的内网地址,即使目标服务器地址是内网 IP,也可以将其填写在 Host 中。
3.2 保存目标服务器配置
点击左侧的 Save profile as,将当前配置保存为:
text
target-server.tlp
至此,我们已经拥有两个独立的配置文件:
text
jump-host.tlp
target-server.tlp
其中,第一个配置文件负责连接中转服务器 A,第二个配置文件负责连接目标服务器 B。下一步需要将两者关联起来。
4. 在目标服务器配置中设置 SSH 跳板代理
这是整个配置过程中最关键的一步。
确保当前编辑的是目标服务器 B 的配置,也就是 target-server.tlp。
4.1 打开 Proxy settings
在 Bitvise 主界面左下方点击 Proxy settings,打开代理设置窗口。
窗口中可以看到类似以下选项:
Use global proxy settingsUse profile proxy settingsUse proxyProxy type
Bitvise 可以使用全局代理设置,也可以针对当前连接配置独立的代理设置。为了避免影响其他服务器连接,建议在目标服务器配置中使用独立的代理设置。
4.2 选择当前配置的代理设置
选中:
text
Use profile proxy settings
然后勾选:
text
Use proxy
这样,代理设置仅应用于当前目标服务器配置,不会直接更改其他连接配置的代理方式。
4.3 将代理类型设置为 SSH
在 Proxy type 下拉菜单中选择:
text
SSH
注意:这里应使用 SSH 跳板代理,而不是 HTTP 代理。
HTTP 代理与 SSH 跳板机是两种不同的代理方式。如果中转服务器本身提供的是 SSH 服务,就应使用 SSH 类型的代理配置。
4.4 选择中转服务器的配置文件
切换为 SSH 代理类型后,根据界面显示找到用于指定 SSH 配置文件的选项,通常会显示为 Profile file 或类似名称。
选择之前保存的中转服务器配置文件:
text
jump-host.tlp
该文件对应服务器 A,包含中转服务器的地址、端口、用户名以及相关认证设置。
完成后点击 OK,返回主界面,并再次保存 target-server.tlp。
至此,目标服务器配置已经关联到中转服务器配置。
5. 通过跳板机连接目标服务器
配置完成后,后续连接通常只需要以下几个步骤:
- 在 Bitvise 中加载
target-server.tlp。 - 检查目标服务器的 Host、Port 和 Username 是否正确。
- 点击
Log in。 - 根据提示完成认证,并在首次连接时核实服务器主机密钥指纹。
Bitvise 会先建立到中转服务器 A 的 SSH 连接,再通过该连接访问目标服务器 B。
连接路径如下:
text
本地电脑
|
| Bitvise SSH Client
v
中转服务器 A
|
| SSH 跳板转发
v
目标服务器 B
连接成功后,就可以在 Bitvise 中使用终端和 SFTP 等功能,访问最终目标服务器。
重点:日常使用时加载目标服务器 B 的配置即可,不需要每次都手动先登录中转服务器 A。
6. 与 OpenSSH ProxyJump 配置的对应关系
如果平时也使用 Linux、macOS 或 Windows OpenSSH,可以通过 ProxyJump 实现类似的连接方式。
例如,在 SSH 配置文件 ~/.ssh/config 中,可以使用以下模板:
sshconfig
Host jump-host
HostName <JUMP_HOST>
User <JUMP_USER>
Port <JUMP_PORT>
Host target-server
HostName <TARGET_HOST>
User <TARGET_USER>
Port <TARGET_PORT>
ProxyJump jump-host
其中:
jump-host定义中转服务器的连接方式。target-server定义最终目标服务器的连接方式。ProxyJump jump-host表示通过中转服务器连接目标服务器。
保存配置后,在终端中执行:
bash
ssh target-server
便可以尝试通过跳板机连接目标服务器。
这与 Bitvise 中分别保存中转服务器配置、再将目标服务器配置关联到中转配置的思路一致。
7. 常见问题排查
7.1 中转服务器可以连接,但目标服务器无法连接
首先检查以下几项:
- 目标服务器的地址和 SSH 端口是否填写正确。
- 中转服务器 A 是否能够访问目标服务器 B。
- 目标服务器 SSH 服务是否正常运行。
- 中转服务器是否允许 SSH TCP 转发。
- 目标服务器防火墙是否允许来自中转服务器的连接。
如果目标服务器使用内网地址,应特别确认该地址在中转服务器所在的网络环境中是否可达。
7.2 出现 Permission denied
这通常表示认证失败。
分别检查中转服务器 A 和目标服务器 B 的认证信息,确认用户名、密码或 SSH 密钥是否匹配。
需要注意的是,两个服务器可以使用不同的认证凭据。即使两边碰巧使用相同密码,也不代表它们共用同一个认证配置。
7.3 出现 Connection timed out
可能的原因包括:
- 本地电脑无法访问中转服务器。
- 中转服务器的地址或端口填写错误。
- 中转服务器无法访问目标服务器。
- 防火墙或安全组拦截了 SSH 连接。
- 目标服务器未开放相应的 SSH 端口。
可以先确认直接连接中转服务器是否成功,再排查中转服务器到目标服务器之间的网络连接。
7.4 每次连接都需要重新配置代理
建议将中转服务器和目标服务器分别保存为独立的 .tlp 配置文件,并在目标服务器配置中关联中转服务器配置文件。
这样可以避免反复填写中转服务器信息,也方便在有多台目标服务器时复用同一个跳板配置。
7.5 首次连接时出现主机密钥提示
首次连接服务器时,Bitvise 可能会提示尚未记录服务器主机密钥。
在接受之前,应通过可信渠道核对服务器指纹。不要仅因为连接出现警告就直接接受未知主机密钥。
如果已记录的主机密钥突然发生变化,也应先确认原因,再继续连接。
8. 安全建议
在配置和使用 SSH 跳板机时,建议注意以下事项:
- 妥善保管配置文件。 Bitvise 配置文件可能包含服务器连接信息,部分情况下还可能保存加密后的凭据。不要将包含敏感信息的配置文件公开上传到 GitHub 等公共平台。
- 优先使用 SSH 密钥认证。 在服务器策略允许的情况下,可使用密钥认证,并妥善保管私钥。
- 不要在博客中公开真实连接信息。 发布教程或截图时,应隐藏服务器 IP、域名、用户名、密码、私钥路径及其他敏感内容。
- 遵循服务器访问权限要求。 只通过获得授权的中转服务器访问相应的目标主机。
- 合理设置转发权限。 服务器管理员应根据实际需求限制 SSH 转发权限,避免不必要的访问风险。
9. 总结
使用 Bitvise SSH Client 配置 SSH 跳板连接,核心是将中转服务器和目标服务器的连接信息分别保存,再通过代理设置将两者关联。
整体流程可以概括为:
text
创建中转服务器配置
|
v
测试连接并保存配置文件
|
v
创建目标服务器配置
|
v
启用独立代理设置
|
v
选择 SSH 代理类型
|
v
关联中转服务器配置文件
|
v
保存配置并连接目标服务器
配置完成后,只需加载目标服务器配置并点击登录,就可以通过中转服务器连接目标主机,无需每次手动建立两次 SSH 会话。
对于需要频繁访问内网 GPU 服务器、实验室计算节点或其他受网络访问限制的服务器的场景,这种方式能够简化连接流程,提高远程开发和文件传输的便利性。