网络相关的命令工具研究报告 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连接
原文地址:https://www.cnblogs.com/cccc2019fzs/p/11927017.html