ssh远程登录协议与tcp wappers

157 阅读5分钟

ssh

安全外壳协议(Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。 SSH使用传输层TCP协议的22号端口。

SSH客户端<--------------网络---------------->SSH服务端

ssh最为主要的三个协议:

传输层协议(The Transport Layer Protocol):传输层协议提供服务器认证,数据机密性,信息完整性等的支持。

用户认证协议(The User Authentication Protocol):用户认证协议为服务器提供客户端的身份鉴别。

连接协议(The Connection Protocol):连接协议将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用。

 

 

ssh 原理

首次公钥交换:

  1. 客户端发起链接请求

  2. 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)

  3. 客户端生成密钥对

  4. 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密

  5. 客户端发送加密值到服务端,服务端用私钥解密,得到Res

  6. 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)

  7. 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

  • 此后数据交换会加密

 

相关指令

ssh 参数 用户@IP地址   //远程登录主机

    -p <port>:指定远程SSH服务器的端口号,默认是22

    -i <identity_file>:指定用于身份验证的私钥文件


ssh -t  跳板IP地址  ssh  目标IP地址   //通过 中转一台服务器 进行访问 主服务器



ssh  IP地址  指令   //连接到时 直接执行 指令

介  

ssh配置文件   

  • 服务名称:sshd

  • 服务端主程序:/usr/sbin/sshd 

  • 服务端配置文件:/etc/ssh/sshd_config

  • 客户端配置文件:/etc/ssh/ssh_config

 

/etc/ssh/sshd_config

AllowUsers     用户名   //允许所有主机访问 指定用户

AllowUsers     用户名@IP地址  用户名   //只允许 指定用户访问 本机的指定用户

17 #Port 22   //指定端口号

37 #LoginGraceTime 2m   //登录时限 超时自动断开

38 #PermitRootLogin no   //是否允许root用户登录

39 #StrictModes yes   //检查 .ssh/文件 权限信息等

40 #MaxAuthTries 2   //密码输入错误限制  默认为三

41 #MaxSessions 10   //指定同时最大连接设备数

/etc/ssh/ssh_config

35 #   StrictHostKeyChecking ask   //若将 ask 改为 no 首次连接时 系统不进行确认询问
                                     出于安全性问题 一般不设置

 

 

SFTP

SFTP(SSH文件传输协议)是一种基于SSH协议的安全文件传输协议,它允许用户通过加密的连接进行文件的上传、下载和管理。SFTP提供了对文件传输的安全保障,可以在不安全的网络环境下进行文件传输。SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。

 

使用方式

sftp [用户名@]IP地址   //连接



sftp连接后 可以使用指令:

    get        //下载文件

    get -r     //下载目录

    put        //上传文件

    put -r     //上传目录

    quit、exit、bye      //退出

 

ftp与sftp的区别:

1.      安全性:SFTP基于SSH协议,通过加密的连接进行文件传输,所有的数据都是加密的,包括身份验证过程中的用户名和密码。而FTP在传输过程中没有加密,数据以明文形式传输,安全性较差。

2.      端口:SFTP使用SSH的默认端口(通常为22),这与SSH服务器的端口相同。而FTP有两个主要的端口,一个用于控制连接(默认端口为21),另一个用于数据传输(默认端口为20)。

3.      防火墙和NAT:SFTP通过SSH协议进行连接,只需要打开SSH端口(通常为22)即可,不需要额外配置。FTP需要打开控制连接和数据连接的端口,并且在使用被动模式(PASV)时,可能需要配置额外的防火墙和网络地址转换(NAT)规则。

访问控制

TCP Wrappers是一个用于网络访问控制的软件工具,它可以通过配置文件对传入(或传出)的网络连接进行策略限制和访问控制。它工作在TCP/IP协议栈中的应用层,可用于限制特定主机或网络对服务的访问。

 

主要配置文件

  • 白名单:/etc/hosts.allow

      配置例子:
    
      sshd:192.168.84.100192.168.84.200    //允许这两个地址使用sshd服务进行访问
    
  • 黑名单:/etc/hosts.deny

      配置列子:
    
      sshd:ALL            //禁止所有地址使用sshd服务进行访问
    

 

白名单的优先级高于黑名单,如果一个地址既在白名单也在黑名单中,该地址是可以访问的。因产生冲突不建议。

 

实际工作中一般通过防火墙的方式来实现同样功能。