ubuntu20.04安装+ros-noetic安装+内网穿透frp

刷机后的系统安装

  • ubuntu20.04安装
  • 安装ros-noetic
  • 安装各种必要的插件
  • 安装vscode
  • 内网穿透连接实验室主机
    • 配置frpc和frps文件
    • 运行
    • 完成自动化部署
    • 免密登录
      • linux的免密登录
      • windows上的免密登录

内网穿透的参考链接:如何优雅地访问远程主机?SSH与frp内网穿透配置教程

ubuntu20.04安装

选择镜像网站:

https://mirrors.tuna.tsinghua.edu.cn/

下载20.04的iso

在vmware中创建新的虚拟机

自定义->下一步
请添加图片描述找自己的影响文件的下载目录

下一步:

设置用户名密码,个性化的全名
请添加图片描述设置名称和存放位置:
请添加图片描述下一步,再下一步,按照有推荐一直下一步,到这里:
请添加图片描述内存设置最好在120G左右(为后续做slam留足空间),放在机械硬盘里面就可以,再下一步

最后完成。

创建好以后可以移出各种外设,包括打印机,软盘,DVD,DVD2等等

安装ros-noetic

首先先修改源的位置,为了git clone的更快

请添加图片描述点开以后在这里:
请添加图片描述在这里选择other,选择阿里云的镜像网站就可以了

安装各种必要的插件

在终端中依次输入:

# 为 apt 添加ROS软件源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

# 为ROS软件源添加密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

# 更新一下软件源,把ros-noetic的包添加进去
sudo apt update

# 安装ros-noetic
sudo apt install ros-noetic-desktop-full


# 安装ros-noetic的各种插件
sudo apt install python3-roslaunch python3-rostopic python3-rosnode python3-catkin python3-catkin-tools python3-wstool python3-vcstool

# 下面两条安装gtsam
# 安装gtsam的网站:https://gtsam.org/get_started/
sudo add-apt-repository ppa:borglab/gtsam-release-4.0

# not necessary since Bionic
sudo apt update  
sudo apt install libgtsam-dev libgtsam-unstable-dev

# 这个指令可有可没有
git config --global core.editor vim

# 配置pip
sudo apt install python3-pip

最后可以安装zsh

安装zsh的过程:

sudo apt install zsh
sudo apt install git
git clone https://github.com/ohmyzsh/ohmyzsh.git
# 找到oh-my-zsh/tools
# 进入该目录,找到setup.sh
# 运行:
sh ./setup.sh

就结束

同时,将

source /opt/ros/noetic/setup.sh

指令放在~/.bashrc文件的最末尾

如果使用zsh,则将:

source /opt/ros/noetic/setup.zsh

上述指令放在~/.zshrc文件中

检查一下,在.zshrc文件中应该有这几个部分

source /opt/ros/noetic/setup.zsh
source /home/gzc/livox_driver_ws/devel/setup.zsh
# 这里是为了和bashrc文件中的环境一样
export PATH=~/.local/bin:$PATH
# 如果有小车的话,需要有小车的ip
export ROS_MASTER_URL=http://localhost:11311

键盘控制小车运动的功能包:teleop_twist_keyboard(只知道名字,还未实践)

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

安装vscode

网站:https://code.visualstudio.com/

下载:

下载好之后,放进Ubuntu中,双击点开,安装

安装简体中文插件

安装C++插件

创建一个c++文件:1.cpp

随后运行,选择/usr/bin/gcc目录下的c++

ctrl+shift+p唤醒命令窗口

内网穿透连接实验室主机

本机:笔记本电脑

远程机:实验室的虚拟机

服务器:阿里云默认linux服务器

注册一个阿里云的服务器,在github上下载0.38.0的frp的代码,网址:

https://github.com/fatedier/frp/releases?page=3

请添加图片描述先开放服务器端linux的端口号,配置如下:
请添加图片描述下载好以后,进行文件的修改:

linux中:编辑/etc/hosts文件,在文件末尾加上

ssh-server + 公网地址

在windows中,编辑文件C:\Windows\System32\drivers\etc\hosts文件,在文件末尾加上

ssh-server + 公网地址

随后,本机(现在操纵的笔记本电脑)ssh到服务器端,即:

ssh root@ssh-server

实验室的虚拟机,也ssh到服务器端,由此,通道已经打通;

配置frpc和frps文件

请添加图片描述frps.ini文件不需要修改

frpc.ini文件需要修改:

[common]
# 这里的ip地址要改成服务器的ip地址,端口号不变
server_addr = xx.xx.xx.xx
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

运行

在服务器端:

找到frps可执行文件在的位置,进入到那个目录,使用以下指令:

cd frps
./frps -c ./frps.ini

如果frps没有执行权限,则在frps的目录下,使用:

chmod +x frps

运行成功后:

请添加图片描述客户端(实验室的虚拟机):

cd frpc
./frpc -c ./frpc.ini

运行成功配图:

请添加图片描述
配置成功,现在就可以使用vscode远程登陆主机了,运行指令:

ssh -p 6000 gzc@ssh-server

输入实验室虚拟机的密码即可登录

完成自动化部署

使用service插件

在服务器端,将下面的代码放在lib/systemd/system/frps.service中

[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
# 这里修改为服务器的主机名
User=root
Restart=on-failure
RestartSec=5s
# 这里修改路径为安装frps可执行文件以及frps.ini文件的路径
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

使用下面的指令:

systemctl daemon-reload
systemctl enable frps
systemctl start frps
systemctl status frps

使用上述指令后,就得到了下面的提示:
请添加图片描述
看到active(running) 就代表启动成功了

在客户端,与服务器端的修改是一样的,不过要使用frpc.service(客户端的)文件

免密登录

需求:本机(笔记本)可以远程访问服务器,免密登录,且免密登录实验室的虚拟机

linux的免密登录

本机的配置:(windows)

首先,在设置 -> 添加可选功能 ->openssh的服务端安装好(用外网)

找到C:\Users\gzc目录下,使用cmd命令:

sshkey-keygen

现在单机.ssh文件夹,可以找到id_rsa.pub公钥

请添加图片描述复制这个公钥,进入虚拟机,在虚拟机的~/.ssh文件夹中,输入以下命令:

# 添加authorized_keys文件
sudo vim authorized_keys

将复制的公钥放在这个文件中,保存,这样就配好了ssh的免密登录(实验室的虚拟机)

公网上的服务器与实验室的虚拟机是一样的配置

windows上的免密登录

如果我现在想要用笔记本登录实验室的windows主机,这样就复杂一些:

将上面复制的公钥粘贴在C:\Users\gzc11 \ .ssh\authorized_keys这个文件中,同时,要设置一下:

C:\ProgramData\ssh文件夹中的配置:

修改的部分在第34,38,51行,同时,将最后两行注释掉了

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

PubkeyAuthentication yes

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile	.ssh/authorized_keys

#AuthorizedPrincipalsFile none

# For this to work you will also need host keys in %programData%/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
#PermitEmptyPasswords no

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# override default of no subsystems
Subsystem	sftp	sftp-server.exe

# Example of overriding settings on a per-user basis
#Match User anoncvs
#	AllowTcpForwarding no
#	PermitTTY no
#	ForceCommand cvs server

# Match Group administrators
#        AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

第三步:重启ssh服务

找到计算机管理界面->服务,找到openssh-Server,重启一下即可
请添加图片描述
内网穿透参考链接:如何优雅地访问远程主机?SSH与frp内网穿透配置教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/547291.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python学习笔记 - 正则表达式

前言 正则表达式(Regular Expression,在代码中常简写为 regex、regexp、RE 或 re)是预先定义好的一个“规则字符串”,通过这个“规则字符串”可以匹配、查找、替换那些符合“规则”的文本,也就是说正则表达式针对的目标…

MSTP/RSTP的保护功能

目录 原理概述 实验目的 实验内容 实验拓扑 1.配置RSTP/MSTP 2.配置BPDU保护 3.配置根保护 4.配置环路保护 5.配置TC-BPDU保护 原理概述 在RSTP或MSTP交换网络中,为了防止恶意攻击或临时环路的产生,可配置保护功能来增强网络的健壮性和安全性。…

C++vector类(个人笔记)

vector类 1.熟悉vector接口以及使用1.1vector的定义1.2vector迭代器使用1.3vector空间增长1.4vector增删查改1.5vector迭代器失效问题(重点) 2.vector的一些笔试题3.模拟实现vector 1.熟悉vector接口以及使用 vector的C官网文档 1.1vector的定义 (con…

用python快速读取大文件几个GB以上的csv数据文件

用python快速读取大文件几个GB以上的csv数据文件 遇到几个GB的csv大文件,用python读取时,可以通过next()函数一行行来读取以提高效率,然后分批量进行处理。 1、文件格式例图 其中第一、第二行是数据行数、列数汇总。 2、流程 1、把csv第一、第二行的数据说明,先读取出来…

Windows远程桌面连接虚拟机Linux

Windows远程桌面连接虚拟机Linux 需要先打开虚拟机的启用VNC连接使用VNC客户端进行连接 yum install -y tigervnc-server #安装tigervnc-server vncserver #启动一个vnc进程 #第一次启动会要求设置密码 #如果需要更改密码可以使用vncpasswd进行更改密码 vncserver -list #查看…

ASUS华硕ROG幻13笔记本电脑GV301R工厂模式原厂OEM预装Windows11系统,恢复出厂开箱状态

适用于型号:GV301RC、GV301RE、GV301RA 工厂模式安装包:https://pan.baidu.com/s/1gLme1VqidpUjCLocgm5ajQ?pwddnbk 提取码:dnbk 工厂模式Win11安装包带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志…

java算法day55 | 动态规划part16 ● 583. 两个字符串的删除操作 ● 72. 编辑距离

583. 两个字符串的删除操作 思路: 和1143.最长公共子序列这道题思路相同,只不过需要对return的数据做一些操作。 class Solution {public int minDistance(String word1, String word2) {int[][] dpnew int[word1.length()1][word2.length()1];for(int …

06_定时器中断

72分频 72MHz 72000000 经过72分频 1000000

【攻防世界】ics-07

<?php session_start();if (!isset($_GET[page])) {show_source(__FILE__);die(); }if (isset($_GET[page]) && $_GET[page] ! index.php) {include(flag.php); }else {header(Location: ?pageflag.php); } <?phpif ($_SESSION[admin]) {$con $_POST[con];$…

可溶性PFA材质三角漏斗耐腐蚀进口聚四氟乙烯漏斗低溶出析出

PFA全名为可溶性聚四氟乙烯、全氟烷氧基树脂&#xff0c;成品外观透明可视&#xff0c;便于观察&#xff0c;有着良好的化学稳定性、耐温性&#xff0c;耐受强酸强碱以及各种有机溶剂&#xff0c;且PFA原料本身较为洁净&#xff0c;金属离子溶出析出少&#xff0c;经过清洗后可…

OpenCV——SUSAN边缘检测

目录 一、SUSAN算法二、代码实现三、结果展示 OpenCV——SUSAN边缘检测由CSDN点云侠原创&#xff0c;爬虫自重。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫。 一、SUSAN算法 Susan边缘检测是一种经典的边缘检测算&#xff0c;它由Susan Smith…

1044: 顺序栈基本操作的实现

解法&#xff1a; #include<iostream> #include<stack> using namespace std; int main() {int n, a, k;stack<int> sk;cin >> n;while (n--) {cin >> a;sk.push(a);}cin >> k;while (k--) {sk.pop();}if (!sk.empty()) {cout << s…

C语言 | 自定义类型:struct结构体(详解)

目录&#xff1a; --前言 1. 结构体类型的定义与基础结构 2. 结构体的使用 3. typedef相关 4. 结构体的自引用 5. 结构体内存对齐 6. 结构体传参 7. 结构体实现位段 --前言&#xff1a; c语言中内置类型&#xff0c;也有自定义的类型。 例如&#xff1a;内置类型 in…

用html写文本变形动画

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>文本变形动画</title><link rel"stylesheet" href"./style.css"> </head> <body> <!-- 两个文本部分…

给你的Qt软件加个授权

写在前面 环境&#xff1a; Win11 64位 VS2019 Qt5.15.2 核心思路&#xff1a; 将授权相关信息加密保存到License.txt中&#xff0c;软件运行时获取并解密授权信息&#xff0c;判断是否在限制期限内即可。 加解密部分使用第三方openssl库进行&#xff0c;因此需要手动在…

设计模式:时序图

设计模式&#xff1a;时序图 设计模式&#xff1a;时序图时序图元素&#xff08;Sequence Diagram Elements&#xff09;角色&#xff08;Actor&#xff09;对象&#xff08;Object&#xff09;生命线&#xff08;Lifeline&#xff09;控制焦点&#xff08;Focus of Control&am…

环形链表II

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 …

gma 2 用户文档(pdf版)更新计划

随着 gma 2 整体构建完成&#xff0c;下一步继续针对库内所有功能完成一个用户指南&#xff08;非网站&#xff09;。相较于上次更新用户文档pdf版&#xff0c;已经过去了大半年。当然&#xff0c;PDF 版比网站上内容更丰富&#xff0c;也更新&#xff08;文档基于 gma 2.0.9a2…

李沐37_微调——自学笔记

标注数据集很贵 网络架构 1.一般神经网络分为两块&#xff0c;一是特征抽取原始像素变成容易线性分割的特征&#xff0c;二是线性分类器来做分类 微调 1.原数据集不能直接使用&#xff0c;因为标号发生改变&#xff0c;通过微调可以仍然对我数据集做特征提取 2.pre-train源…

【保姆级】2024年OnlyFans订阅指南

OnlyFans是一个独特的社交媒体平台&#xff0c;它为创作者和粉丝提供了一个互动交流的空间。通过这个平台&#xff0c;创作者可以分享他们的独家内容&#xff0c;而粉丝则可以通过订阅来支持和享受这些内容。如果你对OnlyFans感兴趣&#xff0c;并希望成为其中的一员&#xff0…