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

(4)VScode之ssh基础配置

VScode和SSH基础配置问题集合

Author:onceday date:2022年8月31日

本文记录linux的ssh和vscode开发环境搭建之路。

参考文档:

  • 离线安装vscode Once Day CSDN博客
  • 关于x86、x86_64/x64、amd64和arm64/aarch64 Bogon 简书
  • arm64和aarch64之间的区别 是在下了 CSDN博客
  • ssh时 authorized_keys失效的解决方法 南滨月亮 CSDN博客

文章目录

      • VScode和SSH基础配置问题集合
        • 1.sshd的配置文件所在
        • 2.生成公私秘钥
        • 3.常规安装ssh-server
        • 4.确定机器类型
        • 5.下载vscode及插件
        • 6.Linux账户问题

1.sshd的配置文件所在

/etc/ssh/sshd_config,在这文件里面,我们可以指定sftp服务的地址:

# override default of no subsystems
Subsystem       sftp    /usr/libexec/sftp-server

sftp-server服务可通过以下命令确定位置:

whereis sftp-server

如果没有该服务,那么可能需要下载安装该服务,不过正常安装ssh的时候应该都会带有该文件。

如果终端能ssh连接Linux,但是未能开启sftp服务,一般是sftp-server的地址填错了。

第二个需要修改的是:

# Authentication:#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

允许root登入,有的linux默认是不允许,这里需要注意一下。

PubkeyAuthentication yes# Expect .ssh/authorized_keys2 to be disregarded by default in future.
AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2

公钥允许登入也要打开,下面的是存放公钥的两个文件,在主目录~下面,文件的权限必须注意。

drwx------ 2 root root     4096 Aug 31 10:24 .ssh/

.ssh必须700权限,使用chmod 700 ~/.ssh即可。

-rw-r--r-- 1 root root  803 Aug 31 11:00 authorized_keys

authorized_keys文件必须不可执行,然后只有所属用户才有读入权限。

使用chmod 644 ~/.ssh/authorized_keys即可。

请注意,这两个文件sshauthorized_keys的权限必须满足以上固定要求,如果在配置无问题的情况,使用秘钥连接仍然需要密码,那么90%的情况下都是这两个文件的权限出了问题。

2.生成公私秘钥

使用命令:

ssh-keygen -t rsa -C "email@email.com"

ssh-keygen一般都是预装的,如果该命令不存在,请自行百度!

在windows下,公私秘钥位于:C:/用户/具体用户目录/.ssh/

在Linux下,公私秘钥位于:~/.ssh/

公钥文件名:id_rsa.pub,私钥文件名:id_rsa

请注意,如果生成公私钥的时候,指定了文件名,那么就不会是这两个名字了。其文件存放位置也可能放生变化。

需要把id_rsa.pub文件里面的文本内容复制到authorized_keys内,然后ssh就可以实现免密登入了。

终端可能需要指定使用ssh密钥登入来使用这种连接登入方式。

3.常规安装ssh-server

在某些发行版的linux上,不会默认开启ssh服务,比如高版本的ubuntu。

可按以下方式来常规安装openssh-server:

sudo apt-get update
sudo apt-get install openssh-server
sudo service ssh start
sudo vi /etc/ssh/sshd_config

请注意,sudo代表需要root权限。

如何确定系统上存不存在ssh软件呢?

一般可使用whichwhereis来查找,which查找PATH路径下,whereis的范围更大,即是这两个文件都查找不到,也不代表机器上未安装ssh,有可能只是安装到某些特殊的路径,并且不想被外人使用。

极端情况下可使用find 目录 -name 文件名来进行大范围搜索。

如果不存在aptyum等包管理软件,那么需要根据linux机器类型,自行从网上下载已编译好的执行程序,也可以是源码,但是需要编译,此时会需要更多的依赖文件。

如何下载第一个文件?在ssh失效,网络失效的情况,有效的方式可能是硬盘了,插上U盘来解决。

4.确定机器类型

命令行输入,set可查看当前的环境变量:

HOSTNAME=firewall
HOSTTYPE=aarch64
IFS=$' \t\n'
LINES=31
LOGNAME=root
MACHTYPE=aarch64-unknown-linux-gnu
MAILCHECK=60
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu

其中摘录一部分。这里的系统是linux,架构是aarch64,其是ARMv8及以后处理器的一种执行状态,即64位寻址,包含异常模型、内存模型、程序员模型和指令集支持。

简而言之,aarch64 = arm64,在目前基本可以认为两者是相同。

arm64架构的描述常见于mac book PC。

aarch64架构的描述常见于linux PC。

诸如x86,AMD64,arm64等都是指令集体系结构(Instruction set architecture,ISA)的名称,ISA是对CPU及其配套设备的抽象模型。

在此模型上,即可抽象出汇编指令,汇编指令和ISA是息息相关的,对于一个编译的C语言,其成为汇编级别的抽象,因此只要ISA相同,可执行程序便可在同类系统中通用。

请注意,相同ISA的机器,其硬件也可能千差万别,因此硬件相关代码,其通用性更加受限。

5.下载vscode及插件

VScode市场链接:visual Studio Code Extensions marketplace

插件自行在以上市场搜索下载离线包,在扩展包的首页->Version History里,即可下载不同版本的离线包。

需要注意,C/C++包有机器类型的限制,但绝大多数包不存在版本限制。

如果机器类型是x86_64,就下载linux x64类型的包,如果是arrch64,则下载Linux ARM64的包。

Alpine Linux是一类和常见Linux不同的精简版Linux,因此不要选择Alpine Linux ARM64包,除非你清楚自己在做什么。

linux x64类型,获取vscode-server的下载,其是一个下载链接,地址为:

https://update.code.visualstudio.com/commit:b06ae3b2d2dbfe28bca3134cc6be65935cdfea6a/server-linux-x64/stable

其中:

commit:b06ae3b2d2dbfe28bca3134cc6be65935cdfea6a

是主机器上的vscode的提交信息,即主机vscode和服务器vscode-server的版本需要对应上。

在主机vscode上,导航栏的help -> about ->commit,显示为提交,需要将下载地址的commit:<对应版本的commit id>改成适合当前vscode版本的信息。

server-linux-x64是下载linux x64类型的包。对于aarch64,应该下载server-linux-arm64如果是32位系统,也要改成对应的数字。

linux aarch64/arm64,获取vscode-server的下载链接,地址为:

#下面是版本1.69.1
https://update.code.visualstudio.com/commit:b06ae3b2d2dbfe28bca3134cc6be65935cdfea6a/server-linux-arm64/stable
#下面是版本1.71.0
https://update.code.visualstudio.com/commit:784b0177c56c607789f9638da7b6bf3230d47a8c/server-linux-arm64/stable

下载的vscode-server-linux-arm64.tar.gz文件安装位置为服务器上的~/.ssh/b06ae3b2d2dbfe28bca3134cc6be65935cdfea6a/目录下。

b06ae3b2d2dbfe28bca3134cc6be65935cdfea6a是对应版本的commit id

文件复制到~/.ssh/b06ae3b2d2dbfe28bca3134cc6be65935cdfea6a/目录下。

需要首先创建该目录,然后复制文件到该目录下,然后执行命令:

cd ~/.vscode-server/bin/b06ae3b2d2dbfe28bca3134cc6be65935cdfea6a
tar -zxf vscode-server-linux-x64.tar.gz --strip-components 1 

这个代表解压并去掉外面一层目录,该步骤非常重要!

最终目录路径架构如下才对

onceday@ubuntu:/bin$ cd ~/.vscode-server/bin/b06ae3b2d2dbfe28bca3134cc6be65935cdfea6a/
onceday@ubuntu:~/.vscode-server/bin/b06ae3b2d2dbfe28bca3134cc6be65935cdfea6a$ ls
LICENSE  bin  extensions  node  node_modules  out  package.json  product.json  server.sh

插件的安装需要先离线下载,然后上传到服务器linux内,再在ssh远程连接的状态下使用本地安装方式进行安装。

6.Linux账户问题

部分linux环境可能存在某些特殊登入方式 ,如串口USART(serial),SPI,CAN,IIC等,这些属于硬件级别的通信概念。

如果提示root登入密钥验证不对,应首先确认root已设置密钥,在许多linux发行版本上 ,root在一开始的时候,是没有密码。

因此,可通过以下命令直接修改root密码:

passwd root

如果存在账号,但登入的shell不是常见的bash,sh,csh,zsh等,可通关以下命令查看账户信息:

root@unknow-host:~# cat /etc/passwd
admin:x:1007:1012::/home/admin:/usr/bin/nc-cli
securityadmin:x:1008:1013::/home/securityadmin:/usr/bin/nc-cli
useradmin:x:1009:1014::/home/useradmin:/usr/bin/nc-cli
auditadmin:x:1010:1015::/home/auditadmin:/usr/bin/nc-cli

可以看到,中间的数字是UID(user id)和GID(group id),一般用户的ID都大于1000,因为小数字的ID都被分配给各种系统和用户服务了,如sshd,www-data,dbus等。

admin,auditadmin等几个用户很惨,他们的shell被挟持到nc-cli去了,这是一个unknow-shell

修改用户登入shell很容易:

root@unknow-host:~# chsh -h
Usage: chsh [options] [LOGIN]Options:-h, --help                    display this help message and exit-R, --root CHROOT_DIR         directory to chroot into-s, --shell SHELL             new login shell for the user account

先查看当前系统安装的shell信息:

root@unknow-host:~# cat /etc/shells 
/bin/sh
/bin/bash
/bin/ash #简化的bash版本,速度快

更改用户onceday的登入shell,路径必须给出完整路径:

chsh -s /bin/sh onceday

以下是账号管理的几个常见命令,谨记Linux账户管理是一个系统性的知识,需要积累和系统性学习

useradd -m user-name  #按照默认配置新建用户账号,并创建主目录文件夹/home/user-name
usermod -L user-name  #冻结用户账号,不允许他登入
usermod -U user-name  #解锁用户账号,允许登入
userdel [-r] user-name #删除用户账户信息,-r选项同时会删除/home/user-name下的内容

通过新建账号,服务器linux可供多个人开发,每个在自己/home/user-name目录下,建有私自的~/.ssh~/.vscode-server文件夹,各账号互不干扰,享受独立的ssh远程连接。

相关文章:

(4)VScode之ssh基础配置

VScode和SSH基础配置问题集合 Author&#xff1a;onceday date&#xff1a;2022年8月31日 本文记录linux的ssh和vscode开发环境搭建之路。 参考文档&#xff1a; 离线安装vscode Once Day CSDN博客关于x86、x86_64/x64、amd64和arm64/aarch64 Bogon 简书arm64和aarch64之间…...

springcloud-1环境搭建、service provider

搭建项目环境创建新项目&#xff0c;选择archetype-webapp&#xff0c;创建一个父项目&#xff0c;该父项目会去管理多个微服务模块(module)项目设置Settings->Editor->File Encoding:Global/Project Encoding 改为UTF-8Default encoding for properties files:默认属性文…...

光谱仪工作过程及重要参数定义

标题光谱仪工作过程CCD、PDA薄型背照式BT-CCD狭缝Slit暗电流Dark Current分辨率Resolution色散Dispersion光栅和闪耀波长Grating波长精度、重复性和准确度Precision带宽Band widthF数F/#光谱仪工作过程 CCD、PDA 电荷耦合器件&#xff08;Charger Coupled Device&#xff0c;缩…...

W800|iot|HLK-W800-KIT-PRO|AliOS|阿里云| |官方demo|学习(1):板载AliOS系统快速上手

板载系统简介 HLK-W800-KIT-PRO 是海凌科电子面向开发者&#xff0c;采用了联盛德 w800 方案&#xff0c;带有一个RGB三色灯&#xff0c;集成了 CHT8305C 温湿度传感器的多功能开发板&#xff0c;用户可以在上面学习、研究嵌入式系统和物联网产品的开发&#xff0c;本套设备运行…...

字节终面,一道Linux题难住我了

以下是一道难道系数中高并且高频出现的linux面试题&#xff0c;题目具体要求如下&#xff1a; linux面试题&#xff1a; 某文件有多列数据&#xff0c;空格隔开&#xff0c;统计第n列单词&#xff0c;打印出现频率最高的5个单词。 解答这道面试题需要用到3个linux命令&#xff…...

三、NetworkX工具包实战2——可视化【CS224W】(Datawhale组队学习)

开源内容&#xff1a;https://github.com/TommyZihao/zihao_course/tree/main/CS224W 子豪兄B 站视频&#xff1a;https://space.bilibili.com/1900783/channel/collectiondetail?sid915098 斯坦福官方课程主页&#xff1a;https://web.stanford.edu/class/cs224w NetworkX…...

【MySQL】MySQL 架构

一、MySQL 架构 C/S 架构&#xff0c;即客户端/服务器架构。服务器程序直接和我们存储的数据打交道&#xff0c;多个客户端连接这个服务器程序。客户端发送请求&#xff0c;服务器响应请求。 MySQL 数据库实例 &#xff1a;即 MySQL 服务器的进程 &#xff08;我们使用任务管理…...

Python日期时间模块

Python 提供了 日期和时间模块用来处理日期和时间&#xff0c;还可以用于格式化日期和时间等常见功能。 时间间隔是以秒为单位的浮点小数。每个时间戳都以自从 1970 年 1 月 1 日午夜&#xff08;历元&#xff09;经过了多长时间来表示。 一、time模块使用 Time 模块包含了大…...

学以致用——植物信息录入1.0(selenium+pandas+os+tkinter)

目的 书接上文&#xff0c;学以致用——植物信息录入&#xff08;seleniumpandasostkinter) 更新要点&#xff1a; tkinter界面&#xff1a;自动登录、新增&#xff08;核心功能&#xff09;、文件夹选择、流程台selenium自动化操作&#xff1a;验证码识别excel数据&#xf…...

什么是压敏电阻

下面的这些都是压敏电阻&#xff0c;常常用在一些电源和信号的浪涌防护电路中。这个是它的电路符号&#xff0c;电路中常用RV表示。当压敏电阻两端电压小于压敏电压时&#xff0c;压敏电阻相当于一个阻值非常大的电阻。当压敏电阻两端电压大于压敏电压时&#xff0c;压敏电阻相…...

Leetcode.901 股票价格跨度

题目链接 Leetcode.901 股票价格跨度 Rating &#xff1a; 1709 题目描述 设计一个算法收集某些股票的每日报价&#xff0c;并返回该股票当日价格的 跨度 。 当日股票价格的 跨度 被定义为股票价格小于或等于今天价格的最大连续日数&#xff08;从今天开始往回数&#xff0c;…...

vue入门(四)组件基础,$emits简单用法

上一篇&#xff1a;vue入门&#xff08;三&#xff09;事件&#xff08;方法&#xff09;处理、侦听器、模板引用 1.组件最基础的用法&#xff1a; 首先有一个button.vue的组件&#xff0c;里面只画了一个按钮 button.vue: <script> export default({data(){return{but…...

VBA提高篇_27 OptionBOX_CheckBox_Frame_Image_VBA附加控件

文章目录1.单选按钮OptionBOX:2.复选框CheckBox:3.框架Frame:4.图像Image: (loadPictrue)5. VBA附加控件:6. 适用于很多控件的重要属性:1.单选按钮OptionBOX: 默认时,同一窗体的所有单选按钮均属于同一组,只能选中一个 可通过Frame控件进行分组解决. 2.复选框CheckBox: 一次可以…...

STM32开发(11)----CubeMX配置独立看门狗(IWDG)

CubeMX配置独立看门狗&#xff08;IWDG&#xff09;前言一、独立看门狗的介绍二、实验过程1.STM32CubeMX配置独立看门狗2.代码实现3.硬件连接4.实验结果总结前言 本章介绍使用STM32CubeMX对独立看门狗定时器进行配置的方法。门狗本质上是一个定时器&#xff0c;提供了更高的安…...

医疗方案 | 星辰天合入选“2022智慧新医信优秀解决方案”

近日&#xff0c;由 HC3i数字医疗网主办的《数字化转型驱动下的医院高质量发展论坛》暨 2022 智慧新医信优秀解决方案发布仪式在线上召开。XSKY星辰天合的“智慧医疗软件定义数据基础设施”解决方案成功入选 2022 智慧新医信优秀解决方案&#xff0c;。此次论坛由 HC3i 数字医疗…...

【系统服务实战】tomcat服务的安装实战

未来要更新的专栏&#xff08;此表格后面会继续完善&#xff09; 专栏系列学习路线完成情况云原生系列linux基本功系列-基础命令汇总已更新51个命令云原生系列linux基本功系列-系统服务实战正在更新文章目录前言一. tomcat的概述1.1 什么是tomcat1.2 tomcat的官网二. tomcat单…...

【图文详解】Unity存储游戏数据的几种方法

Unity3D存储游戏数据的方式1 PlayerPrefs: Unity自带的一种简单的键值存储系统2 ScriptableObject: Unity中最灵活的数据管理工具2.1 如何手动创建和修改数据文件2.2 ScriptableObject优缺点总结3 JSON: 轻量级的数据交换格式3.1 序列化与反序列化3.2 用JsonUtility对对象进行序…...

SESAM 安装教程

SESAM &#xff08;Super Element Structure Analysis Module&#xff09;是由挪威船级社&#xff08;DNV-GL&#xff09;开发的一款有限元分析&#xff08;FEA&#xff09;系统&#xff0c;它以 GeniE、HydroD 和 DeepC 等模块为核心&#xff0c;主要用于海工结构的强度评估、…...

语言文件操作

&#x1f331;博客主页&#xff1a;大寄一场. &#x1f331;系列专栏&#xff1a;C语言学习笔记 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 前言 C语言中的文件打开和关闭 文件指针 文件的打开和关闭 fclose 文件的顺序读写 fseek ftell …...

Java面试题--熔断和降级的区别

熔断和降级都是系统自我保护的一种机制&#xff0c;但二者又有所不同&#xff0c;它们的区别主要体现在以下几点&#xff1a; 概念不同 触发条件不同 归属关系不同 1.概念不同 1.1熔断概念 “熔断”一词早期来自股票市场。熔断&#xff08;Circuit Breaker&#xff09;也…...

AI赋能:借助快马平台轻松打造集成大语言模型的智能openclaw飞书助手

最近在尝试给团队开发一个智能化的飞书助手&#xff0c;发现结合大语言模型的AI能力确实能大幅提升工作效率。经过一番摸索&#xff0c;我总结出一套用InsCode(快马)平台快速实现这类需求的方法&#xff0c;整个过程比想象中简单很多。 明确核心需求场景 智能助手主要解决三个高…...

云原生时代的前端部署最佳实践

云原生时代的前端部署最佳实践 引言&#xff1a;前端部署的进化 哥们&#xff0c;别整那些花里胡哨的&#xff01;作为一个前端开发兼摇滚鼓手&#xff0c;我最烦的就是部署时的各种幺蛾子。从传统的FTP上传&#xff0c;到现在的云原生部署&#xff0c;前端部署已经发生了天翻地…...

Res-Unet实战:在医学图像分割任务中,为什么以及如何用ResNet50替换普通卷积层?

Res-Unet在医学图像分割中的深度优化实践 医学图像分割一直是计算机视觉领域最具挑战性的任务之一。当我们在处理CT扫描、MRI图像或病理切片时&#xff0c;传统U-Net架构虽然表现出色&#xff0c;但随着网络深度增加&#xff0c;梯度消失和特征退化问题逐渐显现。这时&#xff…...

基于深度学习的田间杂草检测系统(YOLOv12/v11/v8/v5模型)(源码+lw+部署文档+讲解等)

摘要田间杂草的生长不仅会影响作物的产量和质量&#xff0c;还会对农田管理造成巨大挑战。传统的杂草检测方法多依赖人工观察&#xff0c;效率低下且受主观因素影响。为了提高田间杂草的检测效率与准确性&#xff0c;本文提出了一种基于深度学习的田间杂草检测系统&#xff0c;…...

MacOS 在Trae IDE中解锁现代C++开发:从零配置到智能编码的进阶指南

1. 为什么选择Trae IDE进行现代C开发 作为一个长期使用Visual Studio和CLion的老C程序员&#xff0c;我第一次接触Trae IDE时就被它的AI特性惊艳到了。这不仅仅是一个代码编辑器&#xff0c;更像是一个懂你编程思维的智能助手。在MacOS环境下&#xff0c;Trae基于VSCode技术构…...

利用快马平台与openclaw快速构建电商数据抓取原型

最近在做一个电商数据分析的小项目&#xff0c;需要快速验证数据抓取的可行性。传统方式从零搭建爬虫环境太费时间&#xff0c;正好发现了InsCode(快马)平台这个神器&#xff0c;配合openclaw库可以快速完成原型开发。这里记录下我的实践过程&#xff0c;特别适合需要快速验证想…...

揭秘AI教材写作:掌握这些技巧,用AI写教材低查重不是梦

编写教材的过程&#xff0c;总是让我踩到“慢节奏”的不少雷区。尽管框架和材料已经准备齐全&#xff0c;却在内容创作上遭遇阻碍——有时候一句话反复修改半个小时&#xff0c;心里始终觉得没说到点子上&#xff1b;而章节之间的衔接&#xff0c;绞尽脑汁也难以找到合适的表达…...

GitHub被封杀后:开源难民在区块链的逃亡

对于全球软件开发者而言&#xff0c;GitHub不仅是代码仓库&#xff0c;更是数字时代的公共广场与精神家园。然而&#xff0c;近年来一系列地缘政治风波与技术壁垒&#xff0c;使得这片曾经自由的土地不断竖起高墙。从伊朗、俄罗斯开发者账号的全面封禁&#xff0c;到针对特定IP…...

宝塔面板怎样实现数据库的多地异地自动备份_结合阿里云OSS与定时任务插件

宝塔面板需通过定时任务ossutilmysqldump实现阿里云OSS数据库自动备份&#xff1a;先配置ossutil及MySQL凭据文件&#xff0c;再编写含时间戳命名与NTP校时的Shell脚本&#xff0c;避免依赖无效的远程备份模块。宝塔面板怎么配置阿里云OSS自动备份数据库能&#xff0c;但得绕过…...

微软承认Copilot不应被用于重要事务处理

近期&#xff0c;微软Copilot个人版用户条款重新引发网友关注&#xff0c;再次提醒人们AI助手实际上只是娱乐工具。尽管最近一次更新发生在2025年底&#xff0c;但Copilot个人版的用户条款文档最近重新吸引了网民的注意。其中包含这样一段重要声明&#xff1a;"Copilot仅供…...