• 网络相关的命令工具研究报告 liushu


    对于Linux下ssh命令的研究报告

    1. ssh命令的功能
    在Linux中,ssh命令是openssh套件中的客户端连接工具。该命令通过SSH协议,在两个互不信任的主机间提供加密的通信连接,实现安全的登陆远程服务器并在其上执行命令


    2. ssh命令背后的协议
    SSH,全称Secure Shell(安全外壳协议),它是一种基于非对称加密的网络传输协议,属于应用层协议,由芬兰学者Tatu Ylonen在1995年设计,目的是取代Telnet等明文传输的协议。openssh就是SSH协议的一种实现

    • SSH协议的组成

      SSH主要由三个子协议构成
      a.传输层协议:提供服务器认证,数据加密和信息完整性校验等功能
      b.用户认证协议:为服务器提供客户端的身份鉴别
      c.连接协议:复用加密的信息隧道,更高层的应用可以在独立于SSH基本体 系外的同时,通过连接协议使用SSH的安全机制

    • 安全连接的建立过程

      SSH安全连接的建立过程可以分为如下三个阶段
      a.协议协商阶段:客户端向服务器发送TCP连接请求,之后双方交换SSH协议 的版本信息,来查看是否兼容,若无法兼容,任何一方均可断开连接
      b.服务器认证阶段:这一阶段采用明文方式传输。服务器和客户端向对方发 送一个自己支持的公钥算法列表、加密算法列表、消息验证码算法列表、压缩 算法列表等。 确定最终使用的算法,然后使用DH交换算法,利用主机密钥对 等参数,生成会话密钥和会话id。这样,双方的加密通道就得以建立
      c.客户端认证阶段:有两种认证方式。1)密码认证。客户端获取用户输入 的密码后使用服务器的公钥进行加密并发送给服务器,服务器使用自己的私钥 进行解密,对比用户密码是否一致。2)公钥认证。服务端用客户端的公钥加 密一个 256 位的随机字符串,客户端接收后使用自己的私钥解密,然后将这 个字符串和会话id合并在一起,对结果MD散列函数并把散列值返回给服务器, 服务器进行相同的MD散列函数处理,若结果一致则通过认证
      至此,认证结束,可以开始数据传输


    3. ssh命令的使用

    • 配置ssh

      服务器的ssh配置文件一般在/etc/ssh/sshd_config,通过vim打开后可以看到几个比较重要的配置项  

      

      Port是ssh协议的监听端口。两个ListenAddress分别对应监听的IPV4和IPV6接口,0.0.0.0表示监听所有IP地址     

      

      LoginGraceTime表示连接后多少时间内无操作即断开连接。PermitRootLogin表示是否允许root用户远程登陆。MaxAuthTries决定最大连接数量,MaxSessions即每个连接可以开启的最大会话数

      

        

      PasswordAurhentication选项为是否开启密码认证。对应的,PubkeyAuthentication选项可以开启公钥认证

    • ssh命令的基本使用
      • 远程登陆
    ssh user@host #远程登陆

    注意第一次登陆远程主机时,ssh会给出该主机的公钥,提示是否信任该主机。用户可以去官网对比公钥来选择是否继续登陆。我的主机设置的密码登陆,因此输入密码即可

    ssh -keygen #用户随机生成公钥
    ssh-copy-id user@host #把公钥发送给主机

    这是另一种登陆方式,即采用公钥认证登陆。它的原理是,用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录,不再要求密码

      • 在本机和远程主机间传送数据

    ssh命令可以通过输入输出重定向,在本机和远程主机间传送数据,下面给出一个例子

    这个例子将本机root家目录下的test文件打包,然后输出给远程主机

      • 绑定端口

    通过使用连接协议,未被加密的网络连接也可以改走SSH连接,从而提高安全性

    ssh -D 8080 user@host #8080端口的数据传输给远程主机时,都会改走ssh连接
  • 相关阅读:
    Android消息队列模型——Thread,Handler,Looper,Massage Queue
    源代码管理十诫
    他们怎样读书和选书(汇总篇)
    Android消息处理机制
    互联网上的免费服务都是怎么赚钱的
    编程是一种对你的身体健康十分有害的工作
    ERROR/AndroidRuntime(716): java.lang.SecurityException: Binder invocation to an incorrect interface
    什么是 MIME Type?
    TCP/IP:网络因此互联
    Eclipse上GIT插件EGIT使用手册
  • 原文地址:https://www.cnblogs.com/cccc2019fzs/p/11927017.html
Copyright © 2020-2023  润新知