(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
即可。
请注意,这两个文件ssh
和authorized_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软件呢?
一般可使用which
和whereis
来查找,which
查找PATH
路径下,whereis
的范围更大,即是这两个文件都查找不到,也不代表机器上未安装ssh,有可能只是安装到某些特殊的路径,并且不想被外人使用。
极端情况下可使用find 目录 -name 文件名
来进行大范围搜索。
如果不存在apt
和yum
等包管理软件,那么需要根据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:onceday date:2022年8月31日 本文记录linux的ssh和vscode开发环境搭建之路。 参考文档: 离线安装vscode Once Day CSDN博客关于x86、x86_64/x64、amd64和arm64/aarch64 Bogon 简书arm64和aarch64之间…...
springcloud-1环境搭建、service provider
搭建项目环境创建新项目,选择archetype-webapp,创建一个父项目,该父项目会去管理多个微服务模块(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 电荷耦合器件(Charger Coupled Device,缩…...

W800|iot|HLK-W800-KIT-PRO|AliOS|阿里云| |官方demo|学习(1):板载AliOS系统快速上手
板载系统简介 HLK-W800-KIT-PRO 是海凌科电子面向开发者,采用了联盛德 w800 方案,带有一个RGB三色灯,集成了 CHT8305C 温湿度传感器的多功能开发板,用户可以在上面学习、研究嵌入式系统和物联网产品的开发,本套设备运行…...

字节终面,一道Linux题难住我了
以下是一道难道系数中高并且高频出现的linux面试题,题目具体要求如下: linux面试题: 某文件有多列数据,空格隔开,统计第n列单词,打印出现频率最高的5个单词。 解答这道面试题需要用到3个linux命令ÿ…...

三、NetworkX工具包实战2——可视化【CS224W】(Datawhale组队学习)
开源内容:https://github.com/TommyZihao/zihao_course/tree/main/CS224W 子豪兄B 站视频:https://space.bilibili.com/1900783/channel/collectiondetail?sid915098 斯坦福官方课程主页:https://web.stanford.edu/class/cs224w NetworkX…...

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

Python日期时间模块
Python 提供了 日期和时间模块用来处理日期和时间,还可以用于格式化日期和时间等常见功能。 时间间隔是以秒为单位的浮点小数。每个时间戳都以自从 1970 年 1 月 1 日午夜(历元)经过了多长时间来表示。 一、time模块使用 Time 模块包含了大…...
学以致用——植物信息录入1.0(selenium+pandas+os+tkinter)
目的 书接上文,学以致用——植物信息录入(seleniumpandasostkinter) 更新要点: tkinter界面:自动登录、新增(核心功能)、文件夹选择、流程台selenium自动化操作:验证码识别excel数据…...

什么是压敏电阻
下面的这些都是压敏电阻,常常用在一些电源和信号的浪涌防护电路中。这个是它的电路符号,电路中常用RV表示。当压敏电阻两端电压小于压敏电压时,压敏电阻相当于一个阻值非常大的电阻。当压敏电阻两端电压大于压敏电压时,压敏电阻相…...
Leetcode.901 股票价格跨度
题目链接 Leetcode.901 股票价格跨度 Rating : 1709 题目描述 设计一个算法收集某些股票的每日报价,并返回该股票当日价格的 跨度 。 当日股票价格的 跨度 被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,…...

vue入门(四)组件基础,$emits简单用法
上一篇:vue入门(三)事件(方法)处理、侦听器、模板引用 1.组件最基础的用法: 首先有一个button.vue的组件,里面只画了一个按钮 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配置独立看门狗(IWDG)前言一、独立看门狗的介绍二、实验过程1.STM32CubeMX配置独立看门狗2.代码实现3.硬件连接4.实验结果总结前言 本章介绍使用STM32CubeMX对独立看门狗定时器进行配置的方法。门狗本质上是一个定时器,提供了更高的安…...

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

【系统服务实战】tomcat服务的安装实战
未来要更新的专栏(此表格后面会继续完善) 专栏系列学习路线完成情况云原生系列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 (Super Element Structure Analysis Module)是由挪威船级社(DNV-GL)开发的一款有限元分析(FEA)系统,它以 GeniE、HydroD 和 DeepC 等模块为核心,主要用于海工结构的强度评估、…...

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

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

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...