SSH介绍以及使用ssh连接服务器、使用FileZilla连接服务器(数字签名认证的方式)

Telnet介绍:
Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。 

其中无论Telnet协议连接的是什么类型的终端,都会转换为NVT(Network Virtual Terminal)格式进行通信。
本地与远程主机建立连接,该过程实际上是建立一个TCP 连接,用户必须知道远程主机的 IP 地址或域名。将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP 数据报
将远程主机输出的 NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果。最后,本地终端对远程主机撤消TCP 连接。其中telnet协议的客户机和服务器端的数据交互都是以明文的方式来进行的。如果通过抓包工具很容易获取到这些数据,并对网络设备进行攻击。

常见的Telnet攻击手段有:

  1. 密码窃取:通过抓包等方式窃取到用户帐号和密码。
  2. 中间人攻击:“中间人”冒充真正的服务器接收到客户端传给服务器的数据,然后再冒充你把数据传给真正的服务器。
  3. 伪服务器:攻击者冒充服务器与客户端进行交互,骗取客户端的帐号信息。

 

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协议将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文介绍OpenSSH是自由软件,应用非常广泛。把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS 和IP 欺骗,这就是SSH。

SSH的登录过程:

  1. 服务器打开22号端口,等待客户端连接,连接后,服务器与客户端协商协议版本。
  2. 密钥和算法协商阶段。服务端和客户端分别发送算法协商报文给对方,报文中包含支持的各种协议的算法列表。根据协商服务器端和客户端选定使用的算法。服务端和客户端利用DH交换算法、主机密钥对等参数,生成会话密钥和会话ID。
  3. 认证阶段,客户端使用密钥和算法协商阶段生成的会话密钥加密账号、认证方法、口令,将结果发送给服务器。服务端使用获得的会话密钥解密报文,得到账号和口令,进行认证。SSH提供两种认证方式:

        密码认证:客户端将用户名和密码加密后发送给服务器,服务器解密后进行比对认证。

        数字签名认证:设备上利用RSA或者DSA公共秘钥算法实现数字签名,生成public(公匙)和key(私匙),然后将public上传到服务器,登录认证时,服务器端向客户端发送随机字符串,用户用自己的私钥加密后,再发回来,最后服务器用储存的公钥进行解密认证。

SSH的原理是基于RSA非对称加密,在这里介绍一下典型的RSA非对称加密:

RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法,于1978年由美国麻省理工学院(MIT)的三位学着:Ron Rivest、Adi Shamir 和 Leonard Adleman 共同提出。 
它的原理较为简单,我们假设有消息发送方A和消息接收方B,通过下面的几个步骤,我们就可以完成消息的加密传递:

  1. 消息发送方A在本地构建密钥对,公钥和私钥。
  2. 消息发送方A将产生的公钥发送给消息接收方B。
  3. B向A发送数据时,通过公钥进行加密,A接收到数据后通过私钥进行解密,完成一次通信,相反,A向B发送数据时,通过私钥对数据进行加密,B接收到数据后通过公钥进行解密。

由于公钥是消息发送方A暴露给消息接收方B的,所以这种方式也存在一定的安全隐患,如果公钥在数据传输过程中泄漏,则A通过私钥加密的数据就可能被解密。

如果要建立更安全的加密消息传递模型,需要消息发送方和消息接收方各构建一套密钥对,并分别将各自的公钥暴露给对方,在进行消息传递时,A通过B的公钥对数据加密,B接收到消息通过B的私钥进行解密,反之,B通过A的公钥进行加密,A接收到消息后通过A的私钥进行解密。但是,这种方式可能存在数据传递被模拟的隐患,我们可以通过数字签名等技术进行安全性的进一步提升。由于存在多次的非对称加解密,这种方式带来的效率问题也更加严重。

实战篇(利用密码认证的方式比较简单,这里就不多赘述,下面主要介绍利用数字签名认证的方式连接服务器): 

1、如何在本地主机中产生公匙和私匙:

首先安装git:windows系统安装git,由于官网上下载git太慢,这里推荐一个快速的下载链接:https://npm.taobao.org/mirrors/git-for-windows/

点击进去选择好合适的版本即可实现快速下载。

安装好git之后,返回桌面,点击右键,选择Git Bash Here,执行如下。

$ cat ~/.ssh/id_rsa.pub

如果出现公匙,表示之前已经生成过公私匙对,则无需生成,如果系统提示没找到 id_rsa.pub 文件,就需要生成新的公私钥对了。输入如下指令即可:

ssh-keygen

2、将公匙添加到服务器:

首先运行git,执行命令:cd ~/.ssh ,公匙文件和私匙文件都在/.ssh文件下,在windows系统中一般是在以下目录中。

C:\Users\Administrator\.ssh 

执行指令 ls 后,执行 cat id_rsa.pub 指令即可查看本机的公匙。

服务器的管理员连接上服务器后复制此公匙到以下文件即可:

/root/.ssh/authorized_keys

3、客户机连接服务器:

当完成以上两个步骤之后在Git Bash中执行以下指令并输入密码后就可以访问服务器了。

ssh -p 22 root@主机IP地址

 

最后补充一下,使用数字签名认证的方式,如果需要使用FileZilla等工具连接服务器的话流程如下:

第一步,选择点击文件,选择站点管理器。

新建站点,其中协议、登录类型选择如下,端口号默认为22,私匙文件地址在如下图所在目录中,找到.ssh文件,选择私匙文件id_rsa即可,然后点击确定,完成了这些步骤就可以用FileZilla连接上服务器了:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值