当前位置: 首页 > news >正文

无公网IP内网穿透使用vscode配置SSH远程ubuntu随时随地开发写代码

文章目录

  • 前言
  • 1、安装OpenSSH
  • 2、vscode配置ssh
  • 3. 局域网测试连接远程服务器
  • 4. 公网远程连接
    • 4.1 ubuntu安装cpolar内网穿透
    • 4.2 创建隧道映射
    • 4.3 测试公网远程连接
  • 5. 配置固定TCP端口地址
    • 5.1 保留一个固定TCP端口地址
    • 5.2 配置固定TCP端口地址
    • 5.3 测试固定公网地址远程

前言

远程连接服务器的工具有很多,比如XShell、putty等,可以通过ssh来远程连接服务器,但这用于写代码并不方便,可能需要现在本地写好代码后再将源代码传送到服务器运行、服务器上的图片也无法直接查看。

而vscode可以很好的解决这些问题,它的核心组件都运行在远程环境中,本地的开发机器完全不需要拥有远程开发环境的源代码,在vscode上编写代码可以直接同步更新到服务器上,给你带来丝滑般的远程开发体验。

所以这篇文章教程,我们将通过vscode实现远程开发,并通过cpolar内网穿透实现在公网环境下的远程连接,让你在出门在外任意地方也可以远程连接服务器进行开发写代码。

1、安装OpenSSH

打开Windows开始页面,直接进行搜索PowerShell,打开第一个Windows PowerShell,点击以管理员身份运行

在这里插入图片描述

打开之后,输入以下指令:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

此时出现的结果就是电脑里没有安装OpenSSH的情况:
在这里插入图片描述

如果已经安装了OpenSSH那么跳过这一步,没有安装的话则输入以下指令

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

在这里插入图片描述

最终结果为如下,则代表着OpenSSH安装成功:

在这里插入图片描述

显示OpenSSH安装成功后,在打开本地cmd进入之后输入命令ssh

ssh

如果显示的是这样结果的话,则说明正确:

在这里插入图片描述

2、vscode配置ssh

在windows上安装vscode,安装成功后并打开。

点击左侧工具栏中的扩展,搜索“ssh”,选择第一个Remote - SSH进行安装(我已经安装过了,所有此时显示的是禁用状态)

在这里插入图片描述

点击左下角的“设置”按钮,紧接着点击“设置”

在这里插入图片描述

根据截图的提示,找到Show Login Terminal并勾选该选项

在这里插入图片描述

点击左侧工具栏中的远程按钮,可以查看远程连接,点击SSH TARGETS下面显示的服务器旁边的按钮进行连接操作

在这里插入图片描述

3. 局域网测试连接远程服务器

以ssh连接ubuntu为例,打开vscode后,先尝试使用局域网地址ssh远程ubuntu

输入命令到对话框中,并回车

ssh  username@ip

在这里插入图片描述

选择一个配置文件

在这里插入图片描述

输入完成在右侧会显示出来刚刚添加的ssh 连接,点击 -->图标 连接,出现输入密码,输入密码即可

在这里插入图片描述

出现绿色标志表示连接成功

在这里插入图片描述

4. 公网远程连接

目前我们只能在局域网内进行远程,具有一定的局限性。不过我们通过内网穿透来实现在公网环境下的远程连接。这里我们借助工具cpolar内网穿透来实现,无需公网IP,也不用设置路由器,操作简单。

cpolar官网:https://www.cpolar.com/

4.1 ubuntu安装cpolar内网穿透

本次教程我们使用的是ubuntu 图形化系统,我们需要先在ubuntu上安装配置cpolar内网穿透,支持一键自动安装脚本。

  • 国内安装
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 或 cpolar短链接安装方式:(国外使用)
curl -sL https://git.io/cpolar | sudo bash
  • 查看版本号,正常显示即为安装成功
cpolar version
  • token认证

登录cpolar官网后台,点击左侧的验证,查看自己的认证token,之后将token贴在命令行里

cpolar authtoken xxxxxxx

在这里插入图片描述

  • 简单穿透测试
cpolar http 8080

有正常生成相应的公网地址,按ctrl+c退出

  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动cpolar服务
sudo systemctl start cpolar
  • 查看服务状态,显示如下图所示为active则为已启动状态
sudo systemctl status cpolar

在这里插入图片描述

cpolar安装并配置完成后,在浏览器上访问本地9200端口,使用cpolar邮箱账号登录cpolar web UI管理界面

在这里插入图片描述

cpolar安装成功后,默认会安装2条样例隧道,可以自行编辑或者删减:

  • ssh隧道:指向本地22端口,TCP协议
  • website隧道:指向本地8080端口,HTTP协议

4.2 创建隧道映射

我们可以直接使用样例隧道ssh,或者重新创建一个隧道,使用tcp协议,指向22端口。点击左侧仪表盘的隧道管理——创建隧道

  • 隧道名称:可自定义,注意不要重复
  • 协议:tcp
  • 本地地址:22
  • 端口类型:随机临时TCP端口
  • 地区:China vip

点击创建
在这里插入图片描述

隧道创建成功后,点击左侧的状态——在线隧道列表,可以看到,刚刚创建的隧道已经有生成了相应的公网地址,将其复制下来

在这里插入图片描述

4.3 测试公网远程连接

在windows上打开vscode,使用所复制的公网地址来远程SSH。

点击SSH TARGETS下面显示的服务器旁边的按钮进行连接操作
在这里插入图片描述

如左侧没有出现添加的连接,点如下按钮刷新

在这里插入图片描述

接着点击小箭头 --> 连接,出现选择ssh 类型,选择linux

在这里插入图片描述

在这里插入图片描述

输入参数,和密码即可远程成功,方便快捷。

在这里插入图片描述

在这里插入图片描述

出现以下信息表示远程连接成功

在这里插入图片描述

5. 配置固定TCP端口地址

由于以上所创建的隧道选择的是随机临时TCP端口,所生成的公网地址会在24小时内随机变化,对于需要长期远程的用户来讲不方便。不过我们可以为其配置固定的地址进行远程连接,后续远程无需先查看随机公网地址再进行远程。

注意:配置固定TCP端口地址功能需要升级至专业版套餐或以上才支持。

5.1 保留一个固定TCP端口地址

打开cpolar官网,登录到官网后台https://dashboard.cpolar.com/reserved,点击左侧的预留,我们来保留一个固定TCP端口地址:

  • 地区:选择china
  • 描述:即备注,可自定义

地址保留成功后,系统会生成相应的固定公网地址,将其复制下来

在这里插入图片描述

5.2 配置固定TCP端口地址

在ubuntu系统上打开浏览器访问本地9200端口,登录cpolar web UI管理界面。点击左侧的隧道管理——隧道列表,找到ssh隧道,点击右侧的编辑,我们来修改隧道信息,将固定tcp端口地址配置到隧道中

在这里插入图片描述

修改隧道信息,将保留成功的固定tcp地址配置到隧道中

  • 端口类型:修改为固定tcp端口
  • 预留的tcp地址:填写保留成功的地址

点击更新

在这里插入图片描述

隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,找到SSH隧道,可以看到公网地址已经更新成为了固定tcp地址。

在这里插入图片描述

5.3 测试固定公网地址远程

打开vscode,选择添加一个ssh连接

在这里插入图片描述

使用保留的tcp地址连接

在这里插入图片描述

在这里插入图片描述

刷新一下

在这里插入图片描述

刷新出来地址,点击右边小箭头”–>”连接,出现以下提示,输入yes

在这里插入图片描述

出现绿色信息,表示连接成功。

在这里插入图片描述

相关文章:

无公网IP内网穿透使用vscode配置SSH远程ubuntu随时随地开发写代码

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…...

二叉树、红黑树、B树、B+树

二叉树 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。 二叉树的特点: 每个结点最多有两棵子树,即二叉树不存在度大于2的结点。二叉树的子树有左右之分&#xf…...

12,【设计模式】工厂

设计模式工厂 通过工程来构建任意参数对象&&std::forwardstd::move 在C中,“工厂”(Factory)是一种设计模式,它提供了一种创建对象的方式,将对象的创建和使用代码分离开来,提高了代码的可扩展性和可…...

mysql 8.0 窗口函数 之 分布函数 与 sql server (2017以后支持) 分布函数 一样

mysql 分布函数 percent_rank() :等级值 百分比cume_dist() :累积分布值 percent_rank() 计算方式 (rank-1)/(rows-1), 其中 rank 的值为使用RANK()函数产生的序号,rows 的值为当前…...

Python Opencv实践 - 图像直方图自适应均衡化

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/cat.jpg", cv.IMREAD_GRAYSCALE) print(img.shape)#整幅图像做普通的直方图均衡化 img_hist_equalized cv.equalizeHist(img)#图像直方图自适应均衡化 #1. 创…...

Linux编程:在程序中异步的调用其他程序

Linux编程:execv在程序中同步调用其他程序_风静如云的博客-CSDN博客 介绍了同步的调用其他程序的方法。 有的时候我们需要异步的调用其他程序,也就是不用等待其他程序的执行结果,尤其是如果其他程序是作为守护进程运行的,也无法等待其运行的结果。 //ssss程序 #include …...

04有监督算法——支持向量机

1.支持向量机 1.1 定义 支持向量机( Support Vector Machine )要解决的问题 什么样的法策边界才是最好的呢? 特征数据本身如果就很难分,怎么办呢? 计算复杂度怎么样?能实际应用吗? 支持向量机( Support Vector Machine , SVM)是一类按监督学习( s…...

macos 使用vscode 开发python 爬虫(安装一)

使用VS Code进行Python爬虫开发是一种常见的选择,下面是一些步骤和建议: 安装VS Code:首先,确保你已经在你的macOS上安装了VS Code。你可以从官方网站(https://code.visualstudio.com/)下载并安装最新版本…...

专有网络VPC私网/公网类产品选择

私网类产品选择 VPC互连:云企业网,对等连接 VPC与本地IDC互连:VPN网关,高速通道,云企业网,智能接入网关 VPC与多站点连接:VPN网关,智能接入网关,VPN网关高速通道 远程接…...

Connect-The-Dots靶场

靶场下载 https://www.vulnhub.com/entry/connect-the-dots-1,384/ 一、信息收集 探测存活主机 netdiscover -r 192.168.16.161/24nmap -sP 192.168.16.161/24端口操作系统扫描 nmap -sV -sC -A -p 1-65535 192.168.16.159扫描发现开放端口有 21 ftp 80 http 20…...

Linux解决RocketMQ中NameServer启动问题

启动步骤可以查看官网,https://github.com/apache/rocketmq 一下说明遇到的问题。 1:ROCKETMQ_HOME问题 根据官网提示进入mq/bin目录下,可以使用./mqnamesrv进行NameServer启动,但是会遇到第一个问题,首次下载Rocket…...

js逆向实战之某书protobuf反序列化

什么是Protobuf? \qquad Protobuf(Protocol Buffer)是 Google 开发的一套数据存储传输协议,作用就是将数据进行序列化后再传输,Protobuf 编码是二进制的,它不是可读的,也不容易手动修改&#xf…...

cpolar+JuiceSSH实现手机端远程连接Linux服务器

文章目录 1. Linux安装cpolar2. 创建公网SSH连接地址3. JuiceSSH公网远程连接4. 固定连接SSH公网地址5. SSH固定地址连接测试 处于内网的虚拟机如何被外网访问呢?如何手机就能访问虚拟机呢? cpolarJuiceSSH 实现手机端远程连接Linux虚拟机(内网穿透,手机端连接Linux虚拟机) …...

[MyBatis系列②]Dao层开发的两种方式

目录 1、传统开发 1.1、代码 1.2、存在的问题 2、代理开发 2.1、开发规范 2.2、代码 ⭐mybatis系列①:增删改查 1、传统开发 传统的mybatis开发中,是在数据访问层实现相应的接口,在实现类中用"命名空间.id"的形式找到对应的映…...

言语理解-中心理解之主题词及行文脉络

例题 例题 例题 例题 例题 例题...

LeetCode 面试题 01.05. 一次编辑

文章目录 一、题目二、C# 题解法一:从第一个不同位置处判断后续相同子串法二:前后序遍历判断第一个不同字符的位置关系 优化法一法二 一、题目 字符串有三种编辑操作:插入一个英文字符、删除一个英文字符或者替换一个英文字符。 给定两个字符串&#xff…...

Mybatis查询in的字段过多不走索引

mybatis查询in的字段有索引&#xff0c;比如说是主键查询&#xff0c; 但是in的字段过多导致索引失效&#xff0c; 这个时候可以考虑将in的数量变少&#xff0c; 200以内都可以&#xff0c; 在数据库方面采用 foreach unionall 的方式将数据集合查询出来 Service层: List<…...

封装公共el-form表单(记录)

1.公共表单组件 //commonForm.vue <script> import {TEXT,SELECT,PASSWORD,TEXTAREA,RADIO,DATE_PICKER } from /conf/uiTypes import { deepClone } from /utils export default {name: GFormCreator,props: {config: { // title/itemstype: Object,required: true}}…...

List 分批处理

1.Google Guava <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>31.0.1-jre</version></dependency>List<String> tempList Arrays.asList("水星","金星&qu…...

SpringSession

Spring Session 是 Spring 的项目之一。Spring Session 提供了一套创建和管理 Servlet HttpSession 的方案&#xff0c;默认采用外置的 Redis 来存储 Session 数据&#xff0c;以此来解决 Session 共享的 问题。(springsession储存session数据的方式有很多&#xff0c;我们常…...

Python Web 开发之 JWT 简介

在之前的课程中,介绍过 Flask-Login 框架&#xff0c;它是基于 Session 和 Cookie 技术来实现用户授权和验证的&#xff0c;不过 Session 有很多的局限性&#xff0c;这一节介绍一种基于 token 的验证方式 —— JWT (JSON Web Token)&#xff0c;除了对 JWT 的概念讲解之外&…...

科技资讯|荷兰电动自行车丢失将被拒保,苹果Find My可以减少丢失

荷兰最大的自行车协会荷兰皇家旅游俱乐部宣布&#xff0c;将不再为胖胎电动自行车提供保险&#xff0c;因为这种自行车的被盗风险极高。 随着电动自行车的销量飙升&#xff0c;胖胎也变得更受欢迎。但问题是&#xff0c;胖胎电动自行车也成为了自行车盗窃者的首选目标。ANWB …...

debian rules语法

当创建Debian软件包时&#xff0c;debian/rules 文件是非常重要的&#xff0c;它定义了软件包的构建规则。这个文件使用Makefile语法&#xff0c;指导构建、编译和安装软件包。下面将详细地介绍debian/rules文件的语法和常见用法。 基本结构&#xff1a; 一个简单的debian/rul…...

网易2023年Q2财报:营收240亿元,游戏技术跨产业创造数字就业

8月24日&#xff0c;网易发布2023年Q2财报。二季度&#xff0c;网易继续聚焦主营业务&#xff0c;业绩表现稳健&#xff1b;净收入240亿元&#xff0c;非公认会计准则下归属于公司股东的持续经营净利润90亿元&#xff0c;研发投入39亿元&#xff0c;相当于拿出近一半利润投入研…...

Python的Flask框架创建、运行与访问

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

Java课题笔记~ 综合案例

3.综合案例 3.1 功能介绍 以上是我们在综合案例要实现的功能。除了对数据的增删改查功能外&#xff0c;还有一些复杂的功能&#xff0c;如 批量删除、分页查询、条件查询 等功能 批量删除 功能&#xff1a;每条数据前都有复选框&#xff0c;当我选中多条数据并点击 批量删除 按…...

Seaborn数据可视化(二)

目录 1.Seaborn风格设置 1.1 主题设置 1.2 轴线设置 1.3 移除轴线 1.4 使用字典传递函数 2.设置绘图元素比例 2.1 设置绘图元素比例paper 2.2 设置绘图元素比例poster 2.3 设置绘图元素比例notebook Seaborn将Matplotlib的参数划分为两个独立的组合&#xff0c;第一组用于…...

HDLBits-Verilog学习记录 | Verilog Language-Basics(1)

文章目录 3.Simple wire4.Four wires5.inverter | Notgate6. And gate7.Nor gate8.Xnorgate 3.Simple wire problem:Create a module with one input and one output that behaves like a wire. module top_module( input in, output out );assign out in;endmodule4.Four w…...

elementui表格嵌套上传文件直传到oss服务器(表单上传)

提示&#xff1a;记录项目中遇到的问题&#xff0c;仅供参考 文章目录 前言一、vue代码二、js接口请求代码 前言 项目需求是在表格中嵌套一个上传图片的功能&#xff0c;并且回显选择的图片和已上传的图片&#xff0c;再通过点击操作列中上传按钮才开始上传&#xff0c;使用的…...

使用navicat来访问doris

访问Doris的UI http:// dorisfe_ip:8030 由于doris是使用mysql协议&#xff0c;因此可以不用任何额外配置就可以使用navicat访问doris。 可以使用MySql客户端来连接Doris FE&#xff0c;也可以使用mysql命令工具连接&#xff0c;因为他是Mysql协议&#xff0c;所以在使用上跟M…...

衡水哪有做网站的/网络运营培训课程

大家好&#xff0c;欢迎来到缠妹财经&#xff01;背驰是缠论动力学的内容&#xff0c;没有背驰&#xff0c;缠论也就基本上没法展开了。 缠中说禅博客原文的背驰&#xff0c;包括线段类盘整背驰、中枢盘整背驰、盘整顶/底背驰和趋势背驰。下面我们了解一下&#xff01;缠中说禅…...

asp网站 复制/哪里有永久免费建站

在QTableWidget表格部件中&#xff0c;如果需要实现表格中各列要占满部件中的可用空间&#xff0c;同时实现各列平分所有空间&#xff0c;有两种方法来实现。 方法一、设置水平表头的sectionResizeMode为Stretch 当水平表头的sectionResizeMode设置为QHeaderView.Stretch后&am…...

柳州微网站开发/如何推广公司网站

Oracle修改字段类型方法 有一个表名为tb&#xff0c;字段段名为name&#xff0c;数据类型nchar(20)。1、假设字段数据为空&#xff0c;则不管改为什么字段类型&#xff0c;可以直接执行&#xff1a; alter table tb modify (name nvarchar2(20)); 2、假设字段有数据&#xf…...

香港公司网站可以备案吗/武汉做seo

emqttd集群设置管理 一、先来看EMQ的文档定义&#xff1a;http://emqtt.com/docs/v1/cluster.html emqttd集群设置管理 假设部署两台服务器s1.emqtt.io, s2.emqtt.io上部署集群: 节点名 主机名(FQDN) IP地址 emqttds1.emqtt.io 或emqttd192.168.0.10 s1.emqtt.io 192.168.0.10 …...

无极招工招聘信息/娄底地seo

大家可能都有类似的经历&#xff0c;去医院看个小感冒也会花个五六百块钱&#xff0c;医疗花费透明性一直都是个问题&#xff0c;Castlight的出现就是为了解决这个问题&#xff0c;近日宣布获得1亿美元D轮融资&#xff0c;这是医疗技术公司有史以来获得的最大一笔融资&#xff…...

如何做网站挣钱/seo在线短视频发布页运营

什么是递归&#xff1a; 如果一个函数在内部可以调用其本身&#xff0c;那么这个函数就是递归函数 函数内部自己调用自己&#xff0c;这个函数就是递归函数 递归函数的作用和循环效果一样 由于递归很容易发生栈溢出错误&#xff0c;所以必须加退出条件return。 例子&#xff1…...