• ssh原理及使用场景


    用过linux系统的朋友,基本肯定会用过ssh。因为大部分的linux登录都是通过ssh将进行登录,除非你用的是类似windows的桌面版。

    一、什么是SSH

    SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH

    二、ssh的基本原理

     传输层协议 [SSH-TRANS]

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

    用户认证协议 [SSH-USERAUTH]

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

    连接协议 [SSH-CONNECT]

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

    三、ssh的使用场景

    1、远程登录 

          1 ssh -p 22 user@host 

          参数: -p:指定端口号。user:登录的用户名。host:登录的主机

          如果是使用默认的端口22,则可以省略 -p参数: ssh user@host 。

        通常使用默认端口以外的其他端口,可以有效减少被攻击的机会。

        此外,如果本地正在使用的用户名与远程登录的用户名一致,登录用户名也是可以省略的,        即: ssh host 

    2、SSH端口转发

         即将TCP 端口的网络数据,转发到指定的主机某个端口上,在转发的同时会对数据进行相应的加密及解密。其中转发,包含本地转发、远程转发、动态转发;

    转发参数如下:

    -C:压缩数据-f :后台认证用户/密码,通常和-N连用,不用登录到远程主机;

    -N :不执行脚本或命令,通常与-f连用;

    -g :在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接;

    -L : 本地端口:目标IP:目标端口;

    -D : 动态端口转发-R : 远程端口转发;

    -T :不分配 TTY 只做代理用;

    -q :安静模式,不输出 错误/警告 信息;

    1)本地端口转发:

    把本地端口的请求,转发的目标端口;参数格式:ssh -L 本地网卡地址:本地端口:目标端口 用户@目标地址

    2)远程端口转发

    把远程端口的请求,转发的目标(本地)端口;参数格式:ssh -R 远程地址:远程端口:目标地址:目标端口

    3)动态转发

    对于本地端口转发和远程端口转发,都存在两个一一对应的端口,分别位于SSH的客户端和服务端,而动态端口转发则只是绑定了一个本地端口,而目标地址:目标端口则是不固定的。目标地址:目标端口是由发起的请求决定的,比如,请求地址为192.168.1.100:3000,则通过SSH转发的请求地址也是192.168.1.100:3000。具体参数如下:

     # 在本地主机A1登陆远程云主机B1,并进行动态端口转发

    sh -D localhost:2000 root@103.59.22.17

    技术之路学无止境!

  • 相关阅读:
    Antelope 和Barracuda区别
    MySQL监控工具-orztop
    MySQL监控工具-orzdba
    CentOS7 下 Hadoop 单节点(伪分布式)部署
    MyBatis-获取 xxxMapper(源码)
    MyBatis-获取 SqlSession(源码)
    Java-获取 JDK 动态代理生成的 Class 文件
    MyBatis-SqlSessionFactory 的创建(源码)
    JAVA-Enum 枚举
    JAVA-Proxy 代理
  • 原文地址:https://www.cnblogs.com/pzscit/p/14380722.html
Copyright © 2020-2023  润新知