(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)也…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
