GNS3内置的VNC不支持跨主机复制粘贴,用起来不是很顺手,且需要使用较多虚拟机时,打开多个vnc窗口也不是很方便,因此可以通过配置SSH弥补这一不足。

1. 通过Cloud连接

如果内网IP资源充足,可以通过CLOUD,让虚拟机直接使用服务器的网卡,以便于客户端直接连接到虚拟机,但不建议直接通过CLOUD上网,因为实测速度较慢(可能跟路由器体质有关)。

在模板或虚拟机节点上右键选择Configure可以配置模板和虚拟机节点的内存、硬盘网卡等参数。

在弹出的窗口上选择NetWork,将Adapters修改为2,即可为虚拟机设置双网卡。

使用时拓扑结构如下,NAT是虚拟网段,用于虚拟机内部通信和上网,Cloud用于客户机直接连接到虚拟机。其中Cloud应使用主机的物理网卡。

具体参照官方文档:Connect GNS3 to the Internet (local server) | GNS3 Documentation

主机的IP配置如下,连接到NAT的网卡可以直接使用DHCP,连接到Cloud的网卡只配置静态IP不配置默认网关,这样上网默认使用NAT网卡,而客户端可以通过Cloud直接连接到虚拟机:

2. 通过WebSSH

如果IP资源紧张,无法使用Cloud,虚拟机节点使用Nat上网,这种情况下,一般只有在服务器上才能访问到虚拟机。为了避免普通用户直接登入服务器,可以使用WebSSH,原理上相当于直接在服务器上通过SSH连接虚拟机。

用Python和JS实现的Web SSH工具,真香!-51CTO.COM

2.1 安装

服务器端执行

sudo pip3 install wssh

或者

git clone https://github.com/huashengdun/webssh.git
sudo pip3 -r requirements.txt -i https://mirrors.ustc.edu.cn/pypi/web/simple
sudo python3 setup.py install

2.2 创建服务

服务器端执行

sudo vim /etc/systemd/system/wssh.service
[Unit]
After=network.service[Service]
ExecStart=wssh --port=20022[Install]
WantedBy=default.target
sudo systemctl daemon-reload
sudo systemctl enable wssh.service
sudo systemctl start wssh.service

2.3 使用

在客户机端访问服务器IP:20022/

IP为对应虚拟机的的虚拟网络IP,port为ssh服务端口,username为要登录的用户名,password为对应虚拟机的密码。

点击connect即可连接

3. 通过SSH反向代理

通过webssh的方式相对简陋,不支持XSHELL、MobaXterm等工具,也不支持SFTP,为了实现这些功能,可以通过SSH反向代理实现。

SSH -R 反向端口转发_autoliuweijie的博客-CSDN博客_端口反向

SSH 命令的三种代理功能(-L/-R/-D) - 知乎 (zhihu.com)

SSH反向隧道实现内网穿透 - 简书 (jianshu.com)

3.1 服务器配置

创建一个新的用户用于ssh代理(避免管理员账户泄露)

# 添加用户
sudo useradd ssh_proxy
# 重设密码
sudo passwd ssh_proxy
New password:
Retype new password:

3.2 虚拟机端配置

在虚拟机上执行

ssh -R {proxy_port}:127.0.0.1:22 ssh_proxy@10.233.0.1 # 服务器端的虚拟网卡IP
# proxy_port为指定服务器的代理本机端口,即访问服务器的proxy_port,即可访问本虚拟机

为了更好用一点,ssh 后面还可以加上:-CqTnN 参数,其中 -C 为压缩数据,-q 安静模式,-T 禁止远程分配终端,-n 关闭标准输入,-N 不执行远程命令。此外视需要还可以增加 -f 参数,把 ssh 放到后台运行。例如:

ssh -CqTnNf -R {proxy_port}:127.0.0.1:22 ssh_proxy@10.233.0.1

3.3 测试

在客户端执行

ssh gns3@192.168.150.87 -p {proxy_port}

顺利连接

3.4 使用autossh

由于ssh不会自动断开重连,如果出现网络波动(虽然在此虚拟架构下几乎不可能),可能会导致连接断开。可以使用autossh实现自动断开重连

# 安装
sudo apt install autossh
# 使用,将ssh替换为autossh即可,也可通过参数M指定一个端口用于外网的主机用来接收内网主机的信息,若隧道不正常则返回给内网主机重新连接。
# 注意此处不能带参数f,否则无法输入密码
autossh -M 5678 -CqTnN -R {proxy_port}:127.0.0.1:22 ssh_proxy@10.233.0.1

3.5 开机自启动

为了避免每次都要在虚拟机上执行上述命令,可以设置上述命令的开机自启动,但是自启动的时候无法交互式输入密码,因此需要通过密钥实现免密SSH

3.5.1 使用密钥对

设置 SSH 通过密钥登录 | 菜鸟教程 (runoob.com)

在服务器上执行:

  1. 为ssh_proxy用户创建home
sudo mkdir ssh_proxy
sudo chown ssh_proxy ssh_proxy
sudo usermod -d /home/ssh_proxy ssh_proxy
  1. 制作密钥对
# 不使用密码锁,一路回车
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ssh_proxy/.ssh/id_rsa):
Created directory '/home/ssh_proxy/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ssh_proxy/.ssh/id_rsa
Your public key has been saved in /home/ssh_proxy/.ssh/id_rsa.pub
  1. 安装公钥
$ cd .ssh
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys
$ chmod 700 ~/.ssh
  1. 设置 SSH,打开密钥登录功能
sudo vim /etc/ssh/sshd_config
# 修改如下参数
PubkeyAuthentication yes
  1. 重启ssh服务
sudo systemctl restart sshd

在虚拟机节点执行

  1. 从服务器上下载私钥
$ sudo mkdir /etc/ssh_keys
$ sudo scp ssh_proxy@10.233.0.1:~/.ssh/id_rsa /etc/ssh_keys/key_ssh_proxy
3.5.2 创建服务

在虚拟机节点执行

  1. 创建 ssh_porxy 服务

    sudo vim /etc/systemd/system/ssh_proxy.service
    
    [Unit]
    After=sshd.service[Service]
    ExecStart=/usr/bin/sshpass -p {passwd} /usr/bin/autossh -M 5678 -CqTnN -R {proxy_port}:127.0.0.1:22 ssh_proxy@10.233.0.1[Install]
    WantedBy=default.target
    
  2. 载入并启动服务

    sudo systemctl daemon-reload
    sudo systemctl enable ssh_proxy.service
    sudo systemctl start ssh_proxy.service
    

服务器配置记录(五)GNS3虚拟机SSH配置相关推荐

  1. 虚拟机web服务器配置ppt,在Linux虚拟机下配置apache构建web服务器.doc

    在Linux虚拟机下配置apache构建web服务器.doc 上传人:清**** 文档编号:55209606 上传时间:2020-03-08 格式:DOC 页数:2 大小:32.50KB 下载提示(请 ...

  2. 虚拟机服务器配置静态ip,VMware虚拟机中配置静态IP的方法

    VMnet0:用于虚拟桥接网络下的虚拟交换机 桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位. VMnet1:用于虚拟Host-Only ...

  3. VSCode通过SSH远程连接虚拟机并配置SpringBoot开发环境

    1.VSCode如何通过SSH远程连接虚拟机 VSCode通过下载Remote SSH插件进行SSH远程连接 2.VSCode下载好Remote SSH插件之后,进行配置,类似gitlab或者gith ...

  4. 服务器配置记录(四)GNS3客户端使用教程

    更多请参照官方文档:Getting Started with GNS3 | GNS3 Documentation 1. GNS3客户端安装配置 1.1 安装 下载GNS3客户端:Releases · ...

  5. win10安装linux虚拟机并配置shell工具连接

    1:虚拟机安装 先看怎么用VMware安装一个虚拟机,全部放图,一步步来.主要还是以防以后我自己忘记怎么搞了,老了,记性不好了. VMware就在网上随便下载一个了,镜像我会在下面放上我的或者大家也可 ...

  6. FREENAS虚拟机Jails配置全攻略(多篇集合)

    本篇涉及的资源下载:http://pan.baidu.com/s/1dFvjTkP 密码:066u FreeNAS:虚拟机(Jails)入门篇 Jails是FreeBSD提供的轻量级级虚拟机,Free ...

  7. CentOS7.6域名服务器配置(一)使用Bind配置主从DNS服务器

    CentOS7.6 使用Bind配置主从DNS服务器 一.环境信息说明 1.1 实现场景 配置实现在一个服务器上配置多域名解析(多区域文件) 配置域名反向解析(这个如果不配置邮件服务器,则不是很重要, ...

  8. linux 虚拟机mac配置网络,Macbook中VMWare的Centos7虚拟机上网配置

    关键词:虚拟机,centos7,上网配置 一.检查Macbook本身的配置 1.打开[系统偏好设置]-[网络]- 选中[Wi-Fi]项(如果您是WIFI上网请选择此项)- 点右侧[高级] 选择[TCP ...

  9. Virtualbox虚拟机网络配置(NAT + Host-only - Bridged) 实现主机->虚拟机,虚拟机->虚拟机

    日常工作中,常常会用虚拟机,在里面安装Server,搭建服务端环境供开发调试,这种使用场景一般都需要虚拟机能够正常访问外部网络,同时宿主机必须可以访问虚拟机.在Virtualbox中,虚拟机访问外部网 ...

最新文章

  1. asp.net url重写相关技术问题整理
  2. Android之让图片匀速旋转效果
  3. 卷积码Viterbi译码算法基本原理及C语言实现
  4. 面试常见问题之实现bind函数
  5. BENET上海分公司网络改造项目设计实施方案(S1项目实践)
  6. 干货!9种高性能可用高并发的技术架构
  7. shell的date命令:使用方法,以及小时、分钟的计算
  8. 在 SELECT 查询中使用开窗函数
  9. 实验报告四 201521430002 张实
  10. Apache Flink 进阶(四):Flink on Yarn / K8s 原理剖析及实践
  11. [安卓历险记] Error when loading the SDK
  12. 奥维地图数据格式_奥维地图导入文件显示 奥维地图支持什么格式文件
  13. 最新JAVA+Python+大数据资料分享
  14. 国际产品经理资格认证NPDP 2017
  15. 【中级计量经济学】Lecture 8 虚拟变量回归
  16. python立体图形_Python 立体图形的画法(一)
  17. SpringBoot事务详解
  18. uploader上传
  19. 如何优化路由器TP_Link AX1800 Wi-Fi6的稳定性 - “普联TL-XDR1860易展版“
  20. redis数据类型及操作

热门文章

  1. 0402/0603/0805/1206封装尺寸
  2. 【Python实训项目】pygame制作【飞机大战】
  3. python 笔记6:格式化时间缩写
  4. 经营者购买餐饮商铺需要注意些什么
  5. 使用注解开发(重点)
  6. [Python] 一行代码让你明白什么叫艺术
  7. 计算机二级Python嵩天老师Mooc学习笔记:天天向上的力量
  8. 新装Ubuntu18.04调校笔记
  9. [ROS] sh脚本文件,source : not found问题
  10. 安利3款可以将pdf转换成word免费软件