照本宣科

SSH(Secure Shell,安全外壳协议)是一种用于在不安全网络上进行安全远程登录和实现其他安全网络服务的协议.功能主要是远程登陆和文件传输(使用scp)

为了建立 SSH 远程连接,需要两个组件:客户端和相应服务端组件,SSH 客户端是我们安装在本地电脑的软件;而服务端,也需有一个称为 SSH 守护程序的组件,它不断地侦听特定的 TCP/IP 端口以获取可能的客户端连接请求。 一旦客户端发起连接,SSH 守护进程将以软件和它支持的协议版本作为响应,两者将交换它们的标识数据。如果提供的凭据正确,SSH 会为适当的环境创建一个新会话。

MacOS 系统自带 SSH 客户端,可以直接使用,Windows 系统需要安装 Xshell 客户端软件,大部分 Linux 发行版系统都自带 SSH 客户端,可以直接使用,可通过 ssh -V 命令查看当前系统是否有 SSH 客户端。

原理

本地向远程服务端发起连接 服务端随机生成一个字符串发送给发起登录的本地端 本地对该字符串使用私钥(~/.ssh/id_rsa)加密发送给服务端 服务端使用公钥(~/.ssh/id_rsa.pub)对私钥加密后的字符串进行解密 服务端对比解密后的字符串和第一次发送给客户端未加密的字符串,若一致则判断为登录成功

开始连接

给出的例子是ssh hello@microsoft.com -A,-A的作用是开启认证代理连接转发功能,-a则表示禁用。转发的对象是端口号,这样本地就可以使用服务器的服务,或者服务器使用本地的一些服务。

使用命令行的登陆需要每次输入账号和ip比较麻烦,所以可以使用配置文件一次性写好。以vscode中的新建ssh连接为例,安装好插件Remote-SSH,对SSH配置文件进行更新。配置文件有两种:

/etc/ssh/ssh.conf和~/.ssh/config分别是系统级别和用户级别的配置,配置方法完全一致,一般只会配置~/.ssh/config文件,配置说明。

Host T4# 目标机的ip地址HostName xxx.xxx.xxx.xxx# 你目标机的用户名User username# 目标机登录端口Port 22

配置好之后就可以一键直连。

密钥

ssh还可以用来登陆git,生成key来免密码登陆git,

ssh-keygen -t rsa -C "codeideaai@gmail.com" -f "codeideaaigmailgithub"
    • -t rsa:指定密钥类型为 RSA。之外还有ed25519类型的
    • -C "codeideaai@gmail.com":为密钥添加注释,通常使用邮箱地址作为标识。
    • -f "codeideaaigmailgithub":指定生成的公钥和密钥文件的名称。
    • 使用SSH-keygen生成GitHub密钥教程_ssh-keygen -t rsa -c-CSDN博客

    结果生成密钥对。会在 ~/.ssh 生成两个文件:

    • codeideaaigmailgithub:私钥文件,需要妥善保管,不要泄露。
    • codeideaaigmailgithub.pub:公钥文件,可以公开分享,用于添加到 GitHub 或其他需要 SSH 认证的服务中。

    高级配置

    高级体现在两点,一点是在服务器新建账号,一点是使用私钥公钥。

    新建root账号,避免用户之间互相影响。

    sudo adduser youraccount
    sudo usermod -aG sudo youraccount

    上面的配置文件虽然方便,但是还是需要每次输入密码。另外一种选择就是通过密钥进行认证,和github的认证一样。这里的username就是刚刚新建的root账号。

    Host T4# 目标机的ip地址HostName xxx.xxx.xxx.xxx# 你目标机的用户名User username# 目标机登录端口Port 22
    IdentityFile ~/.ssh/id_ed25519  # 私钥路径
    IdentitiesOnly yes  # 强制使用指定密钥

    生成密钥之后,复制公钥存放在新建的root账号路径下:/home/xxxxx/.ssh/authorized_keys

    权限设置:

    chmod 700 /home/xxxx/.ssh
    chmod 600 /home/xxxx/.ssh/authorized_keys
    chown -R xxxx:xxxx ~xxxx/.ssh

    登陆服务器后,就可以安装annaconda,安装虚拟环境,从git上面clone代码。clone也需要sudo ssh-keygen -t rsa生成密钥对,会存放在/home/xxx/.ssh/id_rsa 中。

    为了从其他服务器scp拷贝,需要把其他服务器的公钥也追加放入authorized_keys,在新服务器上操作:

    echo "ssh-ed25519 AAAAC3NzaC1... user@client1" >> ~/.ssh/authorized_keys

    安装conda:

    wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh
    bash Anaconda3-5.3.0-Linux-x86_64.sh
    最后配置环境变量
    sudo vim ~/.bashrc
    # 添加环境变量 ${USER} 用户名
    export PATH=/home/${USER}/anaconda3/bin:$PATH
    source ~/.bashrcsource  activate
    conda --versionconda create -n 环境名 python=3.12

    添加源:

    Conda换源_conda换清华源-CSDN博客

    debug

    调试可以加断点也可以打印log,但个人还是习惯打断点。在vscode中,安装了python debugger插件就可以实现打断点。难点在于launch.json的配置。本来vscode会自动生成一份文件,但是调试中断,这是文心一言加工后的:

    {"version": "0.2.0","configurations": [{"name": "Python: 当前文件 (Conda)","type": "python",  // 确保已安装 VS Code Python 扩展"request": "launch","program": "${file}","python": "${command:python.interpreterPath}",  // 自动获取当前选中的解释器"console": "integratedTerminal","justMyCode": true,  // 跳过库代码调试"cwd": "${workspaceFolder}",  // 工作目录"env": {"PYTHONPATH": "${workspaceFolder}",  // 可选:添加项目根目录到 PYTHONPATH"WANDB_MODE": "offline"  // 可选:调试时禁用 wandb 在线同步},"args": []  // 可选:命令行参数,如 ["--arg1", "value1"]},{"name": "Python: 模块调试","type": "python","request": "launch","module": "your_module_name",  // 替换为你的模块名(如 `train`)"python": "${command:python.interpreterPath}","console": "integratedTerminal"}]
    }

    reference:

    1.Linux ssh 基础教程 - 我是唐青枫 - 博客园

    2.https://zhuanlan.zhihu.com/p/614176659

    3.pycharm EAP 构建出错_pycharm eap build expired-CSDN博客

    4.SSH远程连接时报错提示Permission denied (publickey).的解决方法 - 角刀牛Java - 博客园

    5.SSH公私钥免密连接远程服务器_ssh连接服务器 公私钥-CSDN博客

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如若转载,请注明出处:http://www.pswp.cn/bicheng/89285.shtml
    繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89285.shtml
    英文地址,请注明出处:http://en.pswp.cn/bicheng/89285.shtml

    如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    Markdown变身Word,解锁格式转换新姿势

    目录一、引言二、在线转换工具使用法2.1 工具推荐2.2 操作步骤2.3 优缺点分析三、文本编辑器的内置功能或插件3.1 适用编辑器列举3.2 以 Visual Studio Code 为例的操作流程3.3 优势说明四、使用专门的转换软件4.1 Pandoc 软件介绍4.2 安装步骤4.3 命令行转换操作五、编程脚本实…

    MR 处于 WIP 状态的WIP是什么

    WIP是什么 在MR(Merge Request 或代码合并请求)中,WIP 是"Work In Progress" 的缩写,意思是“正在进行中”或“在制品”。当一个MR 被标记为WIP,通常表示它尚未准备好被合并,可能还在开发中&…

    机器学习-线性回归模型和梯度算法

    1. 线性回归模型1.1 线性回归模型线性回归模型:将数据拟合成一条直线。作用:预测数字作为输出。例子:房子的大小与房价的估计(图表)(数据表)1.2 训练集训练集:用于训练模型的数据集训…

    时序预测 | Matlab代码实现VMD-TCN-GRU-MATT变分模态分解时间卷积门控循环单元多头注意力多变量时序预测

    预测效果代码功能 代码主要功能 该代码实现了一个变分模态分解时间卷积门控循环单元多头注意力多变量时间序列预测模型,核心功能为: 使用VMD(变分模态分解)将原始信号分解为多个IMF分量对每个IMF分量构建TCN-GRU-MATT混合神经网络…

    HTML5 离线存储

    HTML5 离线存储(通常指 Application Cache)是早期用于实现 Web 应用离线访问的技术,但由于其设计缺陷已被废弃。现代 Web 开发中,取而代之的是更强大的 Service Worker Cache API 方案(属于 Progressive Web Apps 技术…

    JavaScript 性能优化实战:深入性能瓶颈,精炼优化技巧与最佳实践

    前言 现代前端开发,不仅要“能跑”,更要“跑得快”。在用户体验为王的时代,JavaScript 性能优化已经成为前端工程师的必修课。 为什么要关注 JavaScript 性能 加载缓慢 → 用户流失卡顿滞后 → 交互体验崩溃资源浪费 → 设备电量与内存被吞…

    文心4.5开源背后的战略棋局:百度为何选择All in开放?

    文章目录引言:一场颠覆AI行业格局的孤注国内开源模型的崛起与威胁国际竞争格局的重塑1.技术维度:开源是突破模型性能瓶颈的“加速器”1.1 闭源模型的“内卷化”困境1.2 文心4.5的开源技术架构:从“黑箱”到“乐高”1.2.1文心4.5的技术创新1.2…

    SAP学习笔记 - 开发46 - RAP开发 Managed App Metadata Extension 2 - Booking_M,BookSuppl_M

    上一章讲了 RAP开发中,New Service Definition,Metadata Extension,在Metadata 文件中 复习了 lineItem,selectionField,Search,ObjectModel,Value Help,headerInfo 等内容。 SAP学…

    # Win11开机卡死?无法进入登录界面?3招强制进安全模式,快速修复系统

    Win11开机卡死?无法进入登录界面?3招强制进安全模式,快速修复系统一、问题描述: 当你的win11电脑开机后卡在图片界面就死机,无法进入登录界面,不显示windows徽标,不能正常启动,可能的…

    快捷支付与网关支付:两种主流支付方式的深度解析

    在当今数字化支付时代,快捷支付和网关支付作为两种主流的电子支付方式,为消费者和商家提供了多样化的支付选择。本文将深入探讨这两种支付方式的区别、适用场景及各自的优劣势,帮助您更好地理解现代支付生态。一、快捷支付:便捷高…

    【WRFDA数据教程第一期】LITTLE_R 格式详细介绍

    目录LITTLE_R 格式概述LITTLE_R 的结构1-Header Record 详解:观测的“身份证”2-Data Record:观测数据本体3-Ending Record:终止标志4-Tail Integers:尾部校验字段另-Missing Values(缺测值处理)Mandatory,…

    一文读懂循环神经网络—从零实现长短期记忆网络(LSTM)

    目录 一、遗忘门(Forget Gate):决定 “该忘记什么” 二、输入门(Input Gate):决定 “该记住什么新信息” 三、输出门(Output Gate):决定 “该输出什么” 四、候选记忆…

    FreeRTOS之链表关键数据结构和函数操作接口-1

    FreeRTOS之链表操作相关接口1 FreeRTOS源码下载地址2 任务控制块TCB2.1 任务控制块TCB2.1.1 任务控制块的关键成员2.1.2 TCB 的核心作用2.2 ListItem_t2.3 List_t3 函数接口3.1 vListInitialise3.2 vListInitialiseItem1 FreeRTOS源码下载地址 https://www.freertos.org/ 2 …

    OpenVela之 Arch Timer 驱动框架使用指南

    一、概述 在嵌入式系统开发中,定时器是实现任务调度、精确延时等功能的核心组件。Arch Timer 作为基于 Timer Driver 实现的间隔定时器,在系统调度中扮演着重要角色。本文将全面介绍 Arch Timer 驱动框架,从基本概念到实际应用,帮…

    AAC编解码

    AAC(Advanced Audio Coding,高级音频编码)是一种基于心理声学原理的有损音频编解码技术,广泛应用于流媒体、数字广播、移动音频等场景。其编解码流程围绕 “保留人耳可感知信息、去除冗余” 设计,分为编码(…

    STM32 | HC-SR04 超声波传感器测距

    模块:HC-SR04感应角度:不大于15度 探测距离:2cm-450cm 高精度:可达0.3cmTrig:触发信号,接收MCU发送的控制脉冲,MCU对应GPIO 设置为输出Echo:反馈信号,向MCU发送数据…

    【RTSP从零实践】12、TCP传输H264格式RTP包(RTP_over_TCP)的RTSP服务器(附带源码)

    😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

    【unitrix】 6.1 类型化整数特征(t_int.rs)

    一、源码 这段代码定义了一个 Rust 特征(trait)TInt 和一些实现,用于表示类型化的整数。 use crate::number::{Null, B, Bit, TNumber};/// 类型化整数标记特征 /// /// 要求: /// - 实现 TNumber /// - 可复制 (Copy) /// - 默认…

    速通LVS

    一、LVS的使用lvs部署命令介绍lvs软件相关信息:程序包:ipvsadm Unit File: ipvsadm.service 主程序:/usr/sbin/ipvsadm 规则保存工具:/usr/sbin/ipvsadm-save 规则重载工具:/usr/sbin/ipvsadm-restore 配置文件&#x…

    Nginx,MD5和Knife4j

    一、 Nginx: 项目网关与流量调度核心原理反向代理 (Reverse Proxy):在Web架构中,Nginx作为系统的统一入口(API网关),接收所有外部客户端请求。它通过解析请求的URL路径(location指令),判断请求的…