完成工作机到家里电脑上虚拟机的连接(ssh)

本文介绍如何在复杂的家庭网络环境中,通过搭建SSH隧道实现从办公室电脑远程访问家中的虚拟机。具体步骤包括建立反向隧道、转发端口以及最终连接到虚拟机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

老习惯,先上链接

烂泥:学习ssh之ssh隧道应用 -- 这篇文章帮助我理解反向隧道

man ssh -- 在虚拟机(或者服务器)上查看 ssh 命令行解释

 

那么我的网络结构如下图所示

家里的电脑是小写 a, 办公室的电脑是大写 A,两台电脑都在路由后面,IP都是192.168. 开头,而且家里的路由外端还不是外网IP,其网络结构我就没有进行深入调查了。

那么这种情况下如何用 A 的 SecureCRT 连接到 a 上的虚拟机kivy呢?

 

我的实战环境如下

A: WIN7 (办公室)

a: WIN10 (家里)

a.kivy: UBUNTU17.04 (a上面的虚拟机,后面直接引为 a.kivy )

 

解决思路:

1. 首先建立服务器 S0 到 家里电脑 a 的 SSH反向隧道。

2. 家里电脑 a 转发端口到虚拟机

3. 利用 B 通过服务器连接回 a.kivy 虚拟机

 

1. 建立 S0 到 a 的反向隧道

首先来看看反向通道是干什么的:

当 a 能够正常连接到服务器 S0 上时, a -> S0 这条路是直接可连的,但是 S0 -> a 中间隔着路由器的NAT转换,所以无法直接通过简单的指定 IP:PORT 这种方式来连接的。SSH反向通道利用 a->S0 已经建立好的连接,打通 S0 -> a 的逆向通道(称为反向隧道),使得任何能够连接到服务器 S0 的机器均可以连接到 a。

那么文章开头连接中提供了linux命令行方式和windows Putty的连接,这里我提供一个 SecureCRT 的连接方式

如此,完成了服务器到家里电脑的反向隧道,连接状况如下

如何确定反向隧道建立成功了呢? netstat / lsof 都可以,以 lsof 为例

查询到 localhost:22555 端口正在监听sshd即可

2. 家里电脑 a 转发端口到虚拟机

虚拟机采用 virtualbox 配置,添加一个端口映射即可

连接状态如下

 

3. 利用 B 通过服务器连接回 a.kivy 虚拟机

前面两跳完成后,查阅 ssh 使用,可以直接完成连接

在B上用 git-bash 直接连接(使用 -J 指定服务器 S0 的一跳,分别需要输入服务器密码和虚拟机密码)

ssh -J root@183.203.117.133:17023 -p 22555 kivy@127.0.0.1

或者在用 SecureCRT 连接到服务器 S0 的情况下,直接连接即可

ssh -p 22555 kivy@127.0.0.1

搞定后,连接状态如下,完成连接工作

 

本文实现的前提 : 已经完成了服务器的搭建,且 A 和 a 均可以正常连接到服务器,可以在 a 上使用 SecureCRT 正常连接到 a.kivy 虚拟机

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值