欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-01 17:38:14
...

*惯,先上链接

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

man ssh -- 在虚拟机(或者服务器)上查看 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 的连接方式

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

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

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

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

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

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

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

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

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

连接状态如下

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

 

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

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

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

ssh -J aaa@qq.com:17023 -p 22555 aaa@qq.com

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

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

ssh -p 22555 aaa@qq.com

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

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

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

 

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

 

相关标签: ssh 远程