应用层协议:Telnet和SSH

文章目录

  • 一、Telnet和SSH
    • 1、Telnet协议
      • 1.1、定义:
      • 1.2、工作过程:
      • 1.3、Telnet的C/S模式交互过程
      • 1.4、Telnet修改默认端口号
        • 查看端口
        • 小知识:netstat命令用法
        • Linux修改ftp、telnet、ssh的默认端口)
          • 1、编辑ssh配置文件:
          • 2、编辑telnet配置文件
          • 3、编辑vsftpd配置文件:
      • 1.5 为何有时无法成功建立Telnet连接? 如何解决
      • 1.6 安全隐患
    • 2、SSH协议
      • 2.1、SSH协议概念
      • 2.2、SSH服务组成和默认端口号
      • 2.3、SSH协议框架组成
      • 2.4、安装ssh协议的命令
      • 2.5、查看是否运行sshd进程的命令
  • 三、SCP命令
    • 1、从服务器复制文件/文件夹到本地
    • 2、从本地复制文件/文件夹到服务器

一、Telnet和SSH

1、Telnet协议

1.1、定义:

Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。

Telnet是位于OSI模型的第7层—应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP协议。这一协议需要通过用户名和口令进行认证,是Internet远程登陆服务的标准协议。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。它提供了三种基本服务:

  • Telnet定义一个网络虚拟终端为远程系统提供一个标准接口。客户机程序不必详细了解远程系统,他们只需构造使用标准接口的程序;

  • Telnet包括一个允许客户机和服务器协商选项的机制,而且它还提供一组标准选项; .

  • Telnet对称处理连接的两端,即Telnet不强迫客户机从键盘输入,也不强迫客户机在屏幕上显示输出。

1.2、工作过程:

使用Telnet协议进行远程登录时需要满足以下条件:在本地计算机上必须装有包含Telnet协议的客户程序;必须知道远程主机的Ip地址或域名;必须知道登录标识与口令。
Telnet远程登录服务分为以下4个过程:

1)本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的IP地址或域名;
2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据包;
3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;
4)最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。

1.3、Telnet的C/S模式交互过程

当我们使用Telnet登录进入远程计算机系统时,事实上启动了两个程序:一个是Telnet客户程序,运行在本地主机上;另一个是Telnet服务器程序,它运行在要登录的远程计算机上。

本地主机上的Telnet客户程序主要完成以下功能:

  • 建立与远程服务器的TCP联接。
  • 从键盘上接收本地输入的字符。
  • 将输入的字符串变成标准格式并传送给远程服务器。
  • 从远程服务器接收输出的信息。
  • 将该信息显示在本地主机屏幕上。

远程主机的“服务”程序通常被昵称为“精灵”,它平时不声不响地守候在远程主机上,一接到本地主机的请求,就会立马活跃起来,并完成以下功能:

  • 通知本地主机,远程主机已经准备好了。
  • 等候本地主机输入命令。
  • 对本地主机的命令作出反应(如显示目录内容,或执行某个程序等)。
  • 把执行命令的结果送回本地计算机显示。
  • 重新等候本地主机的命令。

在Internet中,很多服务都采取这样一种客户/服务器结构。对使用者来讲,通常只要了解客户端的程序就可以了。

1.4、Telnet修改默认端口号

在UNIX/Linux 系统中,Telnet 服务的默认端口是 23,FTP服务的默认端口号是 21。

查看端口

在Windows和Linux中要查看端口,可以使用netstat命令:

依次点击“开始→运行”,键入“cmd”并回车,打开命令提示符窗口。在命令提示符状态下键入“netstat -a -n”,按下回车键后就可以看到以数字形式显示的tcp和udp连接的端口号及状态。

小知识:netstat命令用法

命令格式:netstat -a -e -n -o -s
-a 表示显示所有活动的tcp连接以及计算机监听的tcp和udp端口;
-e 表示显示以太网发送和接收的字节数、数据包数等;
-n 表示只以数字形式显示所有活动的tcp连接的地址和端口号;
-o 表示显示活动的tcp连接并包括每个连接的进程id(pid);
-s 表示按协议显示各种连接的统计信息,包括端口号;

Linux修改ftp、telnet、ssh的默认端口)
1、编辑ssh配置文件:

#vi /etc/ssh/ssh_config#vi /etc/ssh/sshd_config以上这2个文件,都去掉#port22前“#”,将22改为自定义端口,比如2222
#vi /etc/service 将ssh相关端口改为2222
#service sshd restartLinux下SSH默认的端口是22,为了安全考虑,现修改SSH的端口为1433,修改方法如下:
/usr/sbin/sshd -p 2222 +ip地址

2、编辑telnet配置文件

#vi /etc/xinetd.d/ekrb5-telnet
将disable=no改为disable=yes
#vi /etc/service 将telnet相关端口更改为自定义,比如2323
#service xinetd restart

3、编辑vsftpd配置文件:

/etc/vsftpd.conf在这个文件中添加下面一条语句:
listen_port=8021
service vsftpd restart
目标:默认端口为21,为了系统安全,需将21端口修改为2021.
步骤:1.修改/etc/services文件(默认分配的端口号和协议类型)
#vi /etc/services
将21/tcp修改为2021/tcp
2.修改(新增)FTP配置文件vsftpd.conf
#vi /etc/vsftpd/vsftpd.conf
如果文件中有Listen_port=21,则将21修改为2021, 否则添加一行Listen_port=2021
3.启动TFP服务
#service vsftpd restart
4.检查TFP服务
#service vsftpd status
或#netstat -npl

1.5 为何有时无法成功建立Telnet连接? 如何解决

  • 如果服务器不在23号端口,而在其它端口等待用户连接,此时Telnet将失败,客户端需要更改连接的端口。

  • 另外Telnet是一个明文传送协议,为了安全起见,许多防火墙将其禁用,如果需要进行远程登录,可以设置防火墙以允许Telnet。

1.6 安全隐患

虽然Telnet较为简单实用也很方便,但是在格外注重安全的现代网络技术中,Telnet并不被重用。原因在于Telnet是一个明文传送协议,它将用户的所有内容,包括用户名和密码都明文在互联网上传送,具有一定的安全隐患,因此许多服务器都会选择禁用Telnet服务。如果我们要使用Telnet的远程登录,使用前应在远端服务器上检查并设置允许Telnet服务的功能。


2、SSH协议

2.1、SSH协议概念

SSH(Secure Shell)安全外壳协议,是一种建立在应用层基础上的安全协议,通过对密码进行加密传输验证,可以在不安全的网络中对网络服务提供安全的传输环境,实现SSH客户端和SSH服务器端的连接,所以SSH是基于客户端-服务端模式。
SSH采用口令和密钥两种用户验证方式,这两者都是通过密文传输数据的。

ssh 用户名@远程主机ip:首次登陆需要下载对方公钥。
示例:ssh 192.168.1.100

2.2、SSH服务组成和默认端口号

SSH服务由服务端软件OpenSSH和连接客户端组成(SSH、SecureCRT,xshell等),默认端口是22。SSH是一个守护进程,负责实时监听客户端请求,并进行处理。

2.3、SSH协议框架组成

SSH协议框架中核心部分的三个协议:传输层协议、用户认证协议、连接协议。

  • 传输层协议(The Transport Layer Protocol):提供服务器认证,数据安全性,信息完整性等功能的支持。
  • 用户认证协议(The User Authentication Protocol):为服务器提供客户端的身份的识别。
  • 连接协议(The Connection Protocol):将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用; 各种高层应用协议可以相对地独立于SSH基本体系之外,然后依靠这个基本框架,通过连接协议使用SSH的安全机制。

2.4、安装ssh协议的命令

1.sudo apt install openssh-client #本地主机运行此条,实际上通常是默认安装client端程序的
2.sudo apt install openssh-server #服务器(被登陆的机器)运行此条命令安装

运行ssh远程传输协议运行起来之后,在服务器端会有一个sshd的进程。

2.5、查看是否运行sshd进程的命令

ps -elf|grep sshd

当有root用户下面的 /usr/sbin/sshd -D 这一条显示 表示服务器端有运行了ssh协议。
首次登陆的时候会问是否接受保持密钥输入yes 最后输入服务器端的用户的密码

三、SCP命令

Linux scp 命令用于 Linux 之间复制文件和目录。
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

本教程为个人定制使用,详细教程请进入Linux 教程 | 菜鸟教程

参数说明:

  • -1: 强制scp命令使用协议ssh1
  • -2: 强制scp命令使用协议ssh2
  • -4: 强制scp命令只使用IPv4寻址
  • -6: 强制scp命令只使用IPv6寻址
  • -B: 使用批处理模式(传输过程中不询问传输口令或短语)
  • -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
  • -p:保留原文件的修改时间,访问时间和访问权限。
  • -q: 不显示传输进度条。
  • -r: 递归复制整个目录。
  • -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
  • -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
  • -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
  • -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
  • -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
  • -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
  • -P port:注意是大写的P, port是指定数据传输用到的端口号
  • -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

假设远程服务器IP地址为 192.168.1.2,本指南用folder和folder1代指文件夹,文件为test.txt。

1、从服务器复制文件/文件夹到本地

scp [email protected]:/root/桌面/folder/test.txt /root/桌面/folder1/
从服务器复制文件夹到本地:
scp -r [email protected]:/root/桌面/folder/ /root/桌面/folder1/	##只需在前⾯加 -r 即可,就可以拷⻉整个⽂件夹
从服务器复制多⽂件到本地:
scp [email protected]:/root/桌面/folder/\{test1.txt,test2.cpp,test3.bin,test.*\} /root/桌面/folder1/
scp默认连接的远端主机22端⼝,如果ssh不是使⽤标准的22端⼝(以233为例)则使⽤-P(P⼤写)指定:
scp -P 233 [email protected]:/root/桌面/folder/test.txt /root/桌面/folder1/

[email protected],root是⽬标服务器(有你需要拷⻉⽂件的服务器)的⽤户名,192.168.1.2是IP地址,后⾯紧跟的 “:” 不要忘记,/root/桌面/folder/test.txt(多⽂件还有test1.txt,test2.cpp,test3.bin,test.a,test.c等) 是⽬标服务器中你要拷⻉⽂件的地址,接⼀个空格,后⾯的/root/桌面/folder1/是本地接收⽂件的地址。

2、从本地复制文件/文件夹到服务器

scp /root/桌面/folder1/test.txt [email protected]:/root/桌面/folder/
从本地复制⽂件夹到服务器:
scp -r /root/桌面/folder1/ [email protected]:/root/桌面/folder/
从本地复制多⽂件到服务器:
scp /root/桌面/folder1/test1.txt test2.cpp test3.bin test.* [email protected]:/root/桌面/folder/

你可能感兴趣的:(常用协议,ssh,网络,服务器)