Telnet 是
Teletype network 的缩写,现在已成为一个专有名词,表示远程登录协议和方式,分为
Telnet 客户端和
Telnet 服务器程序。
Telnet 可以让用户在本地
Telnet 客户端上远端登录到远程
Telnet 服务器上。下面为大家介绍下Telnet是什么以及有什么用等基础知识。
Telnet、Mstsc、SSH、FTP之间的比较和区别
1 Telnet
专业的说,Telnet 是Internet 上远程登录的一种程序也可以理解为有一套标准协议;它可以让您的电脑通过网络登录到网络另一端的电脑上,甚至还可以存取那台电脑上的文件。当然,不是每一台电脑都可以登录,前提是这台电脑有对外开放或者是必须拥有使用者帐号及密码;最重要的是与所想连接的电脑都得连上Internet
1.1 Telnet是什么协议
Telnet 服务器软件是我们最常用的远程登录服务器软件,是一种典型的客户机/服务器模型的服务,它应用Telnet 协议来工作。那么,什么是Telnet 协议?它都具备哪些特点呢? Telnet 是位于OSI 模型的第7层—应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP 协议。就是说他是一种基于TCP 的应用层协议。这一协议需要通过用户名和口令进行认证,是Internet 远程登陆服务的标准协议。应用Telnet 协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。它提供了三种基本服务:
Telnet 定义一个网络虚拟终端为远程系统提供一个标准接口。客户机程序不必详细了解远程系统,他们只需构造使用标准接口的程序;Telnet 包括一个允许客户机和服务器协商选项的机制,而且它还提供一组标准选项;Telnet 对称处理连接的两端,即Telnet 不强迫客户机从键盘输入,也不强迫客户机在屏幕上显示输出。
1.2 Telnet有什么用
Telnet 提供远程登录功能,使得用户在本地主机上运行Telnet 客户端,就可登录到远端的Telnet 服务器. 在本地输入的命令可以在服务器上运行,服务器把结果返回到本地,如同直接在服务器控制台上操作. 这样就可以在本地远程操作和控制服务器。
- 在用户终端与远程主机之间建立一种有效的连接;
- 可以共享主机上的软件和数据资源;
- 可以利用远程主机上提供的信息查询服务进行信息查询;
1.2.1 Telnet使用
在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务 器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。 Telnet 是常用的远程控制Web 服务器的方法。 Telnet 命令允许与使用Telnet 协议的远程计算机通讯。运行 Telnet 时可不使用参数,以便输入由 Telnet 提示符 (Microsoft Telnet> ) 表明的Telnet 上下文。可从 Telnet 提示符下,使用 Telnet 命令管理运行 Telnet 客户端的计算机。 Telnet 客户端命令提示符接受以下命令:
open : 使用 openhostname 可以建立到主机的 Telnet 连接。close : 使用命令 close 命令可以关闭现有的 Telnet 连接。display : 使用 display 命令可以查看 Telnet 客户端的当前设置。send : 使用 send 命令可以向 Telnet 服务器发送命令。支持以下命令:ao : 放弃输出命令。ayt : “Are you there”命令。esc : 发送当前的转义字符。ip : 中断进程命令。synch : 执行 Telnet 同步操作。brk : 发送信号。quit :使用 quit 命令可以退出 Telnet 客户端。set : 使用带有下列参数之一的 set 命令为当前会话配置 Telnet 客户端。bsasdel : Backspace 将作为删除而发送。codeset option : 只有当语言设置为日语时才可用。将当前代码集设置为选项,可以为下列选项之一: ? Shift JIS ? Japanese EUC ? JIS Kanji ? JIS Kanji (78) ? DEC Kanji ? NEC Kanji 应该在远程计算机上设置相同的代码集。默认情况下,Telnet 客户端使用光栅字体。使用这些代码集访问远程计算机之前,您必须配置 Telnet 客户端以使用 TrueType 字体,从而确保正确地显示字符。crlf : 新行模式:导致 Return 键发送 0x0D, 0x0A。delasbs : Delete 将作为退格键发送。escapecharacter : 从 Telnet 会话模式转换到 Telnet 命令模式。当处于 Telnet 命令模式时,按 Enter 将会返回到 Telnet 会话模式。localecho : 打开 localecho。logfilename : 指定为该会话将 Telnet 日志写入到的文件的名称。如果不指定该文件的路径,将在当前目录中创建文件。指定日志文件还会启动日志记录。logging : 启动该会话的日志。mode {console | stream} :操作的模式。ntlm :启动 NTLM 身份验证。term {ansi | vt100 | vt52 | vtnt} :希望 Telnet Client 模拟的终端的类型。? : 显示 set 的帮助信息。unset : 使用 unset 命令可以关闭先前使用 set 命令设置的选项。status : 使用 status 命令可以确定运行 Telnet 客户端的计算机是否已成功连接。?/help : 显示“帮助”信息
1.3 Telnet系统组成
Telnet 由客户软件、服务器软件以及telnet 通信协议等三部分组成。 Telnet 客户软件运行在用户的计算机上。当用户执行Telnet 命令进行远程登录时,客户软件将完成下列功能:
- 建立与远程主机的
TCP 连接。它在一个周知的23号TCP端口上打开一个套接字,如果远程主机上的Telnet 服务器软件一直在这个周知的端口上侦听连接请求,则这个连接便会建立起来。 - 以终端方式为用户提供人机界面。
- 将用户输入的信息通过
Telnet 协议传送给远程主机。 - 接受远程主机发送来的信息,并经过适当的转换显示在用户计算机的屏幕上。
远程主机必须运行Telnet 服务器软件,这样才能提供Telnet远程登录服务。Telnet 服务器软件将完成下列功能:
- 通知网络系统已做好提供远程连接服务的准备。
- 不断地在周知的23号TCP端口上侦听用户的连接请求。
- 处理用户的请求。
- 将处理的结果通过Telnet协议返回给客户程序。
- 继续侦听用户的请求。
telnet 本身是一种协议,所以在windows 和linux 之间是可以相互远程的。
2 Telnet与mstsc的区别
Telnet 本身是一种应用层协议,故在使用Telnet 时可以把它看成是一种系统命令。而且是是黑客的常用手法之一,且不会讲原有的操作用户踢下来(就是说你登陆了,别人都不知道),然而用mstsc 登陆的话,就必须将现在正在使用的用户踢下来才可以。 TELNET 一般是登录开放Telnet 服务的机器的23端口 两者最明显的区别是登陆方式不同,TELNET 是文本方式的登陆,命令行操作;MSTSC是图象界面操作。
3 SSH
3.1 简介
Telnet 服务虽然使用方便,但由于其安全性不高,因此目前通常使用SSH(Secure Shell) 代替Telnet 进行远程管理。SSH 是一个在应用程序中提供安全通信的协议,通过SSH 可以安全地访问服务器,因为SSH 基于成熟的公钥加密体系,把所有传输的数据进行加密,保证数据在传输时不被恶意破坏、泄露和篡改。SSH 还是用了多种加密和认证方式,解决了传输中数据加密和身份认证的问题,能有效防止网络嗅探和IP 欺骗等攻击。 使用Telnet 这个用来访问远程计算机的TCP/IP 协议以控制你的网络设备相当于在离开某个建筑时大喊你的用户名和口令。很快会有人进行监听,并且他 们会利用你安全意识的缺乏。传统的网络服务程序如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心 的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到中间人 (man-in-the- middle)这种方式的攻击。 所谓中间人 的攻击方式,就是中间人 冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。 SSH 是替代Telnet 和其他远程控制台管理应用程序的行业标准。SSH 命令是加密的并以几种方式进行保密。 在使用SSH 的时候,一个数字证书将认证客户端(你的工作站)和服务器(你的网络设备)之间的连接,并加密受保护的口令
SSH1 使用RSA 加密密 钥,SSH2 使用数字签名算法(DSA )密钥保护连接和认证。加密算法包括Blowfish ,数据加密标准(DES ),以及三重DES(3DES) 。 SSH 保护并且有助于防止欺骗,“中间人”攻击,以及数据包监听。 通过使用SSH 把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS 和IP 欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH 有很多功能,它既可以代替telnet ,又可以为ftp、pop 、甚至ppp 提供一个安全的“通道”。
ssh简介
ssh 是(Secure Shell protocol ) 的简写,安全外壳协议(SSH )是一种在不安全网络上提供安全远程登录 及其它安全网络服务的协议。
3.2 ssh主要功能
一个就是类似 telnet 的远程联机使用 shell 的服务器,即 ssh 另一个就是类似 FTP 服务的 sftp-server ,提供更安全的 FTP 服务
3.3 ssh工作原理
- 服务器建立公钥: 每一次启动 sshd 服务时,该服务会主动去找
/etc/ssh/ssh_host* 的文件,若系统刚刚安装完成时,由于没有这些公钥,因此 sshd 会主动去计算出这些需要的公钥,同时也会计算出服务器自己需要的私钥 - 客户端主动联机请求: 若客户端想要联机到
ssh 服务器,则需要使用适当的客户端程序来联机,包括 ssh, putty 等客户端程序连接 - 服务器传送公钥给客户端: 接收到客户端的要求后,服务器便将第一个步骤取得的公钥传送给客户端使用 (此时应是明码传送,反正公钥本来就是给大家使用的)
- 客户端记录并比对服务器的公钥数据及随机计算自己的公私钥: 若客户端第一次连接到此服务器,则会将服务器的公钥记录到客户端的用户家目录内的
~/.ssh/known_hosts 。若是已经记录过该服务器的公钥,则客户端会去比对此次接收到的与之前的记录是否有差异。若接受此公钥, 则开始计算客户端自己的公私钥 - 回传客户端的公钥到服务器端: 用户将自己的公钥传送给服务器。此时服务器:具有服务器的私钥与客户端的公钥,而客户端则是: 具有服务器的公钥以及客户端自己的私钥,你会看到,在此次联机的服务器与客户端的密钥系统 (公钥+私钥) 并不一样,所以才称为非对称加密系统
- 开始双向加解密:
(1)服务器到客户端:服务器传送数据时,拿用户的公钥加密后送出。客户端接收后,用自己的私钥解密 (2)客户端到服务器:客户端传送数据时,拿服务器的公钥加密后送出。服务器接收后,用服务器的私钥解密,这样就能保证通信安全
3.4 ssh组成
ssh 协议 使用的是tcp 22 号端口,telnet 使用的是tcp 的23 号端口,ssh 协议是C/S架构,分为服务器端与客户端。
服务器端的程序有 sshd 客户端的程序有,Windows下 putty,SecureCRT,SSHSSH Secure Shell Client …… Linux下有,ssh
3.5 ssh工具实现
OpenSSH 包括sshd 主程序与ssh 客户端
3.6 sshd配置文件详解
vim /etc/ssh/sshd_config
1. SSH Server 全局设定,port ,协议 ……
Protocol 2
2. 主要私有Key 存放文件
3. 关于登录文件的数据与daemon的名称
SyslogFacility AUTHPRIV
4. 安全设置
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
5. 登录后项目
UsePrivilegeSeparation yes
MaxStartups 10
DenyUsers *
DenyUsers test
DenyGroups test
6. SFTP 设定
Subsystem sftp /usr/lib/ssh/sftp-server
3.7 sftp
使用方式:sftp root@localhost 和sftp 支持的命令 针对远程服务器主机 (Server) 的行为
变换目录到 `/etc/test` 或其他目录
cd /etc/test
cd PATH
列出目前所在目录下的文件名
ls
dir
建立目录
mkdir directory
删除目录
rmdir directory
显示目前所在的目录
pwd
更改文件或目录群组
chgrp groupname PATH
更改文件或目录拥有者
chown username PATH
更改文件或目录的权限
chmod 644 PATH 其中,644 与权限有关
建立链接文件
ln oldname newname
删除文件或目录
rm PATH
更改文件或目录名称
rename oldname newname
离开远程主机
exit (or) bye (or) quit
针对本机 (Client) 的行为(都加上 l, L 的小写 )
变换目录到本机的 PATH 当中
lcd PATH
列出目前本机所在目录下的文件名
lls
在本机建立目录
lmkdir
显示目前所在的本机目录
lpwd
针对资料上传/下载的操作
将文件由本机上传到远程主机 put [本机目录或文件] [远程]
put [本机目录或文件]
如果是这种格式,则文件会放置到目前远程主机的目录下
将文件由远程主机下载回来 get [远程主机目录或文件] [本机]
get [远程主机目录或文件]
若是这种格式,则文件会放置在目前本机所在的目录当中!可以使用通配符,例如:
get *
get *.rpm
3.8 远程文件直接复制 scp
scp [-pr] [-l 速率] file [账号@]主机:目录名
选项与参数:
- p :保留原来文件的权限数据
- r :复制来源为目录时,可以复制整个目录 (含子目录)
- l :可以限制传输的速度,单位为 Kbits/s ,例如 [-l 800] 代表传输速限 100Kbytes/s
案例:
scp /etc/hosts* root @127.0.0.1 :~
scp root@127.0.0.1:/etc/bashrc /tmp
3.9 ssh的认证方式
基于口令的认证:这个就不用说了,就是输入用户名和密码 基于密钥的认证,具体步骤如下
客户端建立两把钥匙(公钥与私钥)
ssh-keygen [-t rsa|dsa]
[root@localhost ~]
[root@localhost ~]
total 8
-rw------- 1 root root 1675 May 27 03:05 id_rsa
-rw-r--r-- 1 root root 408 May 27 03:05 id_rsa.pub
将公钥数据上传到服务器上
scp ~/.ssh/id_rsa.pub root@192.168.1.254:~
将公钥放置服务器端的正确目录与文件名(scp 或 ssh-copy-id)
方法一 scp
- 建立 ~/.ssh 文件,注意权限需要为 700
- mkdir .ssh ; chmod 700 .ssh #权限设定中,务必是 700 且属于使用者本人的账号与群组才行
- 将公钥内的数据使用 cat 转存到 authorized_keys 内
- cat id_rsa.pub >> .ssh/authorized_keys
- chmod 644 .ssh/authorized_keys #这个档案的权限设定中,就得要是 644 才可以
方法二 ssh-copy-id 命令格式:ssh-copy-id –i /path/to/pubkey USERNAME@ERMOTE_HOST 案例: ssh-copy-id –i .ssh/id_rsa.pub root@192.168.1.254
4 FTP
4.1 定义
FTP :文件传输协议。先说说他的功能吧,主要就是从运行FTP 服务器的计算机传输文件。可以交互使用。这里要注意,只有安装了tcp/ip 协议的机器才能使用ftp 命令。
4.2 使用
4.2.1 命令格式
命令格式: ftp [-v][-d][-i][-n][-g][-s:filename][-a][-w:windowsize][computer] 说说他们的含义:
-v : 不显示远程服务器响应-n : 禁止第一次连接的时候自动登陆-i : 在多个文件传输期间关闭交互提示-d : 允许调试、显示客户机和服务器之间传递的全部ftp命令-g : 不允许使用文件名通配符,文件名通配符的意思是说允许在本地文件以及路径名中使用通配字符-s :filename 指定包含ftp命令的文本文件。在ftp命令启动后将自动运行这些命令。在加的参数里不能有空格。-a : 绑定数据连接时,使用任何的本地端口-w : windowsize 忽略默认的4096传输缓冲区computer : 指定要连接的远程计算机的ip地址
4.2.2 具体命令
理解了上面的,就说说一些具体的命令,个人觉得虽然现在工具用起来很方便了,但懂这些命令在很多地方还是很有用的,就像现在nt下的命令提示符
? : 显示ftp 命令的说明。后面可以加参数,是加需要解释的命令名,不加则显示包含所有命令列表。append :使用当前文件类型设置,将本地文件附加到远程计算机中。 大概格式是append local-file [remote-file] 其中local-file 是说指定要添加的本地文件。 remote-file 是说指定要将local-file附加到远程计算机文件,要是省了这个,则是使用本地文件名做远程文件名。ascii : 默认情况下,将文件传输类型设置为ASCIIbell :响玲开关,意思是文件传输完成后是否有玲声提醒。默认是关闭的。binary :将文件传输类型设置为二进制。- `bye
说明:结束和远程计算机的ftp会话,也就是安全断开,退出ftp. cd :更改远程计算机上的工作目录。如cd data 其中data是要进入的远程计算机的目录。close :结束与远程服务器的ftp会话,并返回命令解释程序。dir :显示远程的文件以及子目录列表。如dir data local-file 其中data是指定要查看列表的目录,没指定的话就是当前目录。local-file 是指定要保存列表的本地文件,不指定的话就在屏幕输出。debug :调试开关,打开的时候打印每个发送到远程计算机的命令,命令前有——>默认情况是关闭的。disconnnect :与远程计算机断开连接,但还保持着ftp命令提示符。get :使用当前文件传输类型,把远程的文件拷贝到本地计算机上。 如get remote-file local-file remote-file是指定要复制的文件,local-file是指定本地计算机上的文件名,没有指定的话则个remote-file同名。glob :文件名通配开关hash :转换每个传输数据快的散列标记打印(#).数据快的大小是2048字节。默认情况下是关闭的,help :显示ftp命令的解释,如help commmand 其中command就是你要解释的命令,如果不加command这个参数的话就会显示所有命令的列表! :这个命令差点忘记了功能是在本地计算机上运行指定命令。如! command 其中command 就是你要运行的命令,如果不加command这个参数的话,则显示本地命令提示, 这时输入exit 命令就能返回到ftp 了。lcd :更改本地计算机的本地目录,在默认的时候是启动ftp的目录.这个不要觉得没用啊,在你使用ftp的时候为了传递文件不是常改变本地和远程计算机的目录吗? 如lcd [directory] 其中[directory]是指定要进入的本地计算机的目录,如果你不加这个参数,就会显示出本地计算机的工作目录.literal :向远程ftp服务器发送协商参数,报告. 如lireral argument […] 其中argument是指定要发送给远程服务器的协商参数。ls :显示远程目录的文件和字目录. 如ls remote-directory local-file 其中remote-directory 是指要查看的列表的目录,不指定的话显示的是当前工作目录。local-file 是指定要保存列表的本地文件.不指定的话是在屏幕上输出.mdelete :删除远程计算机上的文件.如mdelete remote-file … remote-file肯定是要删的文件啊,可以删除多个.mdir :显示远程目录的文件和子目录列表,他允许指定多个文件. 如mdir remote-file … local-filemget :使用当前文件传输类型将多个远程文件复制到本地计算机. 如mget remote-files … 其实remote-files可以指定多个,他就是指定要复制到本地计算机的远程文件.mkdir :创建远程目录. 如mkdir directory 这个命令和nt下的命令提示符中的md directory一样,不多说了.mls :显示远程目录的文件和目录简表 如mls remote-file … local-file 其中remote-file这个参数是必须要加的,’’-’’是使用远程计算机的当前工作目录.mput :使用当前文件传输类型,将本地文件复制到远程计算机. 如mput local-files …open :连接到指定ftp服务器上, 如open computer port 其中computer一般是远程计算机的ip地址,port不用说就是指定端口了。prompt :转换提示,在多个文件传输的时候,ftp提示可以有选择的检索或保存文件,如果关闭提示,则mget和mput命令传输所有文件,在默认情况下是打开的.put :使用当前文件传输类型将本地文件复制到远程计算机中, 如put local-file remote-file 其中local-file是指定要复制的本地文件, remote-file是指定要复制的远程计算机上的文件名,不指定的话是和本地计算机上的文件名同名.pwd :显示远程呢感计算机上的当前目录.quit :结束与远程计算机的ftp会话,并退出ftp.quote :向远程ftp服务器发送协议,报告.期待ftp单码应答,这个命令的功能和literal相同.recv :使用当前文件传输类型将远程文件复制到本地计算机,他与get命令作用相同。remotehelp :显示远程命令的帮助.这个命令的用法和help,!一样可以参考他的用法.rename :更改远程计算机上的文件名。 这个命令和nt的命令提示符的ren一样,如rename filename newfilenamermdir :删除远程目录. 这个命令和nt的命令提示符的rm一样,如rmdir directorysend :使用当前文件传输类型将本地文件复制到远程计算机.send和put命令的功能一样。如send local-file remote-filestatus :显示ftp连接和转换的当前状态trace :转换报文跟踪,运行ftp的命令时,trace将显示没个报文的理由。type :设置或显示文件传输类型. 如type [type-name] 其中type-name 的意思是文件传输的类型,默认是ASCII,没加这个参数就是显示当前的传输类型.user :指定连接到远程计算机的用户. 如user user-name [passwd] [account] 其中user-name不用说都是用来登陆计算机的用户名了, passwd是指定user-name的密码,不指定的话ftp会提示输入密码。 account是指定用来登陆计算机的帐号,如不指定,ftp会提示输入帐号.verbose :转换冗余模式。这里如果打开,会显示所有ftp响应,文件传输结束的时候会显示传输的效率和统计信息,默认的情况是打开的
|