首页 > 其他分享 >SSH、SFTP、FTP、Telnet、SCP、TFTP协议的原理

SSH、SFTP、FTP、Telnet、SCP、TFTP协议的原理

时间:2022-10-09 01:55:33浏览次数:61  
标签:FTP 协议 主机 端口 Telnet SFTP SSH 远程 ssh

一.SSH协议
1.什么是SSH?
SSH全称 安全外壳协议(Secure Shell),,是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。

SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接
主要用于远程登录,通过本机的ssh客户端,登录到远程的ssh服务器,从而实现在本地远程操作和控制服务器。
几乎所有UNIx操作系统都可以运行SSH
1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是开源软件,应用非常广泛。

此外,本文只讨论SSH在Linux Shell中的用法。如果要在Windows系统中使用SSH,会用到另一种软件PuTTY,这个有时间各位可以去了解
2.基本使用
SSH主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。

$ ssh user@hostIP
如果本地用户名与远程用户名一致,登录时可以省略用户名。

$ ssh host
SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以指定端口。

#这条命令表示,ssh直接连接远程主机的2222端口。
$ ssh -p 2222 user@host
3.中间人攻击
SSH之所以能够保证安全,原因在于它采用了公钥加密。

整个过程是这样的:

远程主机收到用户的登录请求,把自己的公钥发给用户。
用户使用这个公钥,将登录密码加密后,发送回来。
远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
这个过程本身是安全的,但是实施的时候存在一个风险:

如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。这种风险就是著名的"中间人攻击"(Man-in-the-middle attack)。
SSH协议是如何应对的呢?

4.SSH提供2种级别的安全验证
1. 基于密码的安全验证
只要你知道自己帐号和密码,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。

安全链接的过程是:

远程主机端收到客户端的登陆请求时先发送自己的公钥给客户端
客户端用拿到的公钥加密用户名和密码,然后发送给远程主机
远程主机用自己的私钥解密收到的用户名和密码,然后校验用户名和密码是否正确,如果正确则登陆成功。
如果你是第一次登录对方主机,系统会出现下面的提示:

  $ ssh user@host
  The authenticity of host 'host (12.18.429.21)' can't be established.
  RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
  Are you sure you want to continue connecting (yes/no)?
这段话的意思是,无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?

所谓"公钥指纹",是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。
上例中是98:2e:d7:e0

标签:FTP,协议,主机,端口,Telnet,SFTP,SSH,远程,ssh
From: https://www.cnblogs.com/xuweiqibky/p/16770824.html

相关文章