『运维备忘录』之 SSH 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等知识,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大家喜欢。

今天我们要讲的是 SSH 命令


一、简介 

SSH 全称 Secure Shell(安全外壳协议),是一种在不安全网络上用于安全远程登录和其他安全网络服务的协议。SSH由IETF的网络小组(Network Working Group)所制定,它是建立在应用层基础上的安全协议。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris等等,都可运行SSH。

二、SSH 安全验证

从客户端来看,SSH提供两种级别的安全验证。

2.1. 基于口令的安全验证

只要你知道自己账号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

2.2. 基于密匙的安全验证

需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

三、SSH 协议组成

SSH 主要由三部分组成。

3.1. 传输层协议 [SSH-TRANS]

提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。 SSH-TRANS 通常运行在TCP/IP连接上,也可能用于其它可靠数据流上。 SSH-TRANS 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证。更高层的用户认证协议可以设计为在此协议之上。

3.2. 用户认证协议 [SSH-USERAUTH]

用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 SSH-TRANS 上面。当SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希H )。会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。 SSH-USERAUTH 也需要知道低层协议是否提供保密性保护。

3.3. 连接协议 [SSH-CONNECT]

将多个加密隧道分成逻辑通道。它运行在用户认证协议上。它提供了交互式登录话路、远程命令执行、转发 TCP/IP 连接和转发 X11 连接。

四、SSH 使用

4.1. 基本用法

ssh	[-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J destination] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-P tag] [-p port] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] destination [command [argument ...]]

选项参数:

-4:强制使用IPv4地址
-6:强制使用IPv6地址
-p:远程服务器监听的端口
-b:指定连接的源IP
-v:调试模式
-C:压缩方式
-X:支持x11转发
-t:强制伪tty分配,如:ssh -t 10.0.0.5 ssh -t 10.0.0.6 ssh 10.0.0.7 这个可以实现多跳中的逐级登陆,最后达到可以登录最后一个服务器的目的
-o:option 如:-o StrictHostKeyChecking=no
-i:指定私钥路径,实现基于key验证,默认为: ~/.ssh/id_dsa,~/.ssh/id_ecdsa, ~/.ssh/id_ed25519,~/.ssh/id_rsa

说明:上述列举了常用的选项参数,详细参数说明参见 https://man.openbsd.org/ssh.1 

4.2. 配置文件

SSH 主要有以下几个配置文件:

  • /etc/ssh/ssh_config:系统范围的配置
  • ~/.ssh/config:用户特定的配置
  • ~/.ssh/id_{type}:私钥
  • ~/.ssh/id_{type}.pub:公钥
  • ~/.ssh/known_hosts:登录主机
  • ~/.ssh/authorized_keys:授权登录密钥

相关目录权限需设置为: 

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/id_rsa
$ chmod 600 ~/.ssh/id_rsa.pub

4.3. SSH 连接

$ ssh root@192.168.1.11   # 连接到服务器(默认端口 22)
$ ssh root@192.168.1.1 -p 2222   # 在特定端口上连接

4.4. SSH 执行命令

$ ssh root@192.168.1.11 'ls -lrt'   # 执行远程命令
$ ssh root@192.168.1.11 bash < script.sh   # 调用本地脚本
$ ssh root@192.168.1.11 "tar cvzf - ~/source" > output.tgz   # 从服务器压缩和下载

4.5. SSH ProxyJump

ssh 可以使用 ProxyJump 创建初始和第二个连接,而不是首先通过 SSH 连接到跳板主机,然后在跳板上使用 ssh 连接到远程主机。

注意:ProxyJump 或 -J 标志是在 ssh 7.3 版中引入的。

$ ssh -J proxy_host1 remote_host2
$ ssh -J user@proxy_host1 user@remote_host2

$ ssh -J user@proxy_host1:port1,user@proxy_host2:port2 user@remote_host3   # 多次跳跃

4.6. ssh-copy-id

ssh-copy-id 功能是用于将本地生成的SSH公钥信息复制到远程主机,一般配合 SSH keygen 使用,用于服务器之间的免密登陆配置。

$ ssh-copy-id user@server   # 复制到指定服务器
$ ssh-copy-id server1   # 复制到别名服务器
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@server   # 复制特定密钥

4.7. SCP

SCP(Secure Copy)是基于SSH协议的文件传输工具,用于在本地主机和远程主机之间安全地传输文件,跟 SSH 的差别就是 SCP 指定端口号使用的是大写的 -P。

用法:

scp -P [端口号] [本地文件或者目录] 用户名@IP地址:[远程服务器目录]
scp [本地文件或者目录] [别名]:[远程服务器目录]

示例:

$ scp user@server:/dir/file.ext dest/      # 从远程复制到本地
$ scp user@server:/file user@server:/dir   # 两台服务器之间的副本
$ scp dest/file.ext user@server:/dir       # 从本地复制到远程
$ scp -r user@server:/dir dest/  # 复制整个文件夹
$ scp user@server:/dir/* dest/   # 复制文件夹中的所有文件
$ scp user@server:/dir/* .       # 从服务器文件夹复制到当前文件夹

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

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

相关文章

C++Qt:noteBookPro_01

一、创建项目 选择Qt Widgets 常用的是QWidgets和MainWindow。两者的区别&#xff1a; QWidgets用于简单的窗口&#xff0c;没有内置的菜单栏、工具栏和状态栏。适用于简单专用的应用程序&#xff0c;不需要复杂的界面组件。 MainWindow是包含完整的菜单栏、工具栏和状态栏的主…

入门级10寸加固行业平板—EM-I10J

亿道信息以其坚固耐用的智能终端设备而闻名&#xff0c;近日发布了一款理想入门级 10 英寸加固平板电脑—I10J。 EM-I10J​​ 这是一款 10 英寸的平板电脑&#xff0c;主要运行 Windows 10操作系统&#xff0c;带有硬化塑料外壳&#xff0c;具有 IP65 防水防尘功能和 MIL-STD 8…

unity学习(19)——客户端与服务器合力完成注册功能(1)入门准备

逆向服务器用了三天的时间&#xff0c;但此时觉得一切都值&#xff0c;又可以继续学习了。 服务器中登录请求和注册请求由command变量进行区分&#xff0c;上一层的type变量都是login。 public void process(Session session, SocketModel model) {switch (model.Command){ca…

nvm安装配置环境

前言 对于前端开发人员来说&#xff0c;多个项目可能用的不同的node版本&#xff0c;如何方便快速的转换版本&#xff0c;nvm版本管理工具的出现&#xff0c;解决这个问题。 实战 1. 搜索nvm版本&#xff0c;我用的1.1.2&#xff0c;下载后直接安装。 2.在d盘建立nvm空文件…

网络IO模型

前言 本篇博客主要讲解一下网络IO模型。我们常见的网络模型分为 阻塞IO模型&#xff0c;非阻塞IO模型&#xff0c;IO复用模型&#xff0c;信号驱动IO模型&#xff0c;异步IO模型。下面我详细的介绍一下这五个IO模型。 阻塞IO模型 ​ 所谓阻塞IO就是当应用A发起读取数据申请时&…

Nginx 正向代理、反向代理

文章目录 前言1. 正向代理1.1 概念1.2 逻辑图1.3 使用场景 2. 反向代理2.1 概念2.2 逻辑图2.3 使用场景 前言 正向代理主要是用来解决访问限制问题&#xff1b;反向代理则是提供负载均衡、安全防护等作用 1. 正向代理 1.1 概念 正向代理是一个位于客户端和目标服务器之间的代理…

红衣大叔讲AI:从OpenAI发布首个视频大模型Sora,谈2024年视觉大模型的十大趋势

OpenAI宣布推出全新的生成式人工智能模型“Sora”。据了解&#xff0c;通过文本指令&#xff0c;Sora可以直接输出长达60秒的视频&#xff0c;并且包含高度细致的背景、复杂的多角度镜头&#xff0c;以及富有情感的多个角色。 OpenAI发布首个视频大模型Sora&#xff0c;一句话生…

CSS-布局-MDN文档学习笔记

CSS布局 查看更多学习笔记&#xff1a;GitHub&#xff1a;LoveEmiliaForever MDN中文官网 介绍CSS布局 正常布局流简介 正常布局流是指在不对页面进行任何布局控制时&#xff0c;浏览器默认的 HTML 布局方式 当你使用 css 创建一个布局时&#xff0c;你正在离开正常布局流 …

引入成熟的Pytest自动化测试框架

虽然我们能使用脚本编写自动化测试框架&#xff0c;但没有必要重复找车轮子&#xff0c;引入成熟的自动化测试框架即可&#xff0c; Pytest是目前最成熟、功能最全面的Python测试框架之一&#xff0c;简单灵活、易于上手&#xff0c;可完全兼容其他测试框架如unitest&#xff…

简单介绍数据结构的基本概念

数据结构的基本概念 常用术语 数据 数据&#xff08;Data&#xff09;是客观事物的符号表示&#xff0c;是所有能输入到计算机中并被计算机程序处理的符号的总称。例如&#xff1a;整数、字符串、图形、图像、声音和动画等 数据元素 数据元素&#xff08;Data Element&…

Harbor上传镜像报错413

错误截图 问题分析 Harbor前置nginx上传允许限制 解决方案 1.如果使用的是nginx则添加配置 client_max_body_size 0; &#xff08;0表示无限制&#xff09; 2.如果使用的是nginx-ingress则添加更改配置 ...annotations:nginx.ingress.kubernetes.io/force-ssl-redirect: &q…

Unity ScreenPointToRay 获取到的坐标不准确

&#x1f47e;奇奇怪怪的 &#x1f959;问题描述&#x1f96a;解决方案&#x1f37f;验证代码 &#x1f959;问题描述 使用&#xff1a;Camera.main.ScreenPointToRay 将鼠标坐标转换成射线&#xff0c;然后通过&#xff1a;Physics.Raycast 获取到射线碰撞到的坐标&#xff0…

【漏洞复现-通达OA】通达OA report_bi存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计…

【问题】pycharm无法添加conda环境,没有反应!

① 问题描述 pycharm版本:pycharm-community-2023.3.3 在conda中已经创建了虚拟环境Python38,想要在pycharm中设置添加Python编译器,想使用conda的环境。但是,怎么都没有反应。 ② 解决方法 可以选择系统解释器,然后选中conda虚拟环境envs中的Python.exe作为系统解释器…

【数据仓库】主题域和数据域

数据域与主题域区别 https://www.cnblogs.com/datadance/p/16898254.html 数据域是自下而上&#xff0c;以业务数据视角来划分数据&#xff0c;一般进行完业务系统数据调研之后就可以进行数据域的划分。针对公共明细层&#xff08;DWD&#xff09;进行主题划分。主题域则自上而…

我的NPI项目之Android Camera (二) -- 核心部件之 Camera Sensor

说到Camera模组&#xff0c;我们比较关心的是用的什么样的sensor&#xff1f; sensor的分辨率多少&#xff0c;sensor的像素多大&#xff0c;sensor是哪家生产的等等一些问题。今天&#xff0c;我们就穿越时间&#xff0c;将sensor的历史扒一扒。 Wikipedia先看一下&#xff1…

如何将OpenAI Sora生成的普通AI视频转化为Vision Pro的空间视频,沉浸式体验

【基于AI的Vision Pro空间视频】工作流:这个工作流程用于将2D视频转换为适用于 Vision Pro的Spatial视频: 1、使用Deep3D将2D视频转换为3D SBS: 使用Deep3D工具将2D视频转换为3D SBS格式: 转换例子:Prediction– lucataco/deep3d – Replicatehttps://replicate.com/…

防止被恶意调用API接口

前言 在面试时&#xff0c;经常会被问一个问题&#xff1a;如何防止别人恶意刷接口&#xff1f; 这是一个非常有意思的问题&#xff0c;防范措施挺多的。今天这篇文章专门跟大家一起聊聊&#xff0c;希望对你会有所帮助。 1 防火墙 防火墙是网络安全中最基本的安全设备之一&…

Unity导出Android studio项目遇到的aar无法打包问题

Android Studio 接入现有aar 前因,开发过程中,发现Unity打包出来的android包,带有aar,随着android studio打包的过程中,发现要么提示aar要从网络下载,下载不到,要么提示当前aar不能直接在本地引入(玄学,之前一直不会),会导致损坏。 原因,Android studio版本高,An…

Java基于微信小程序的乐室预约小程序,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…