前言:我们经常听见各种各样的协议,什么ssh,vnc,rdp,telnet等等,他们似乎都实现着类似的功能,有时候傻傻分不清楚,其实她们基本上都是近亲,本文着重讨论一下这三者之间的关系,可以参考前一篇一起阅读:
详解远程桌面协议, Linux 和 Windows 间的远程桌面互相访问(RDP、VNC协议)
先明确一点观点:这些协议都实现了不同计算机之间的通信,既然分为通信,他们都分为“服务端”和“客户端”,服务端需要配置相关的服务,这样客户端才能够连接并访问。
一般的远程访问步骤:
(1)选定某一种远程访问协议,如RDP,VNC,SSH,TelNet等;
(2)分别安装对应协议的“服务端软件”和“客户端软件”;
(3)在服务端启动对应的协议,并进行一些自定义的服务配置;
(4)通过客户端远程连接。
一、Telnet协议
Telnet是进行远程登录的标准协议,它是当今Internet上应用最广泛的协议之一。它把用户正在使用的终端或计算机变成网络某一远程主机的仿真终端,使得用户可以方便地使用远程主机上的软、硬件资源。
1.1 Telnet服务的安装
Telnet有两个安装包:telnet-server和telnet
telnet-server安装包是服务器端的安装包,telnet是客户端的安装包,一般系统默认都已经安装了这两个包,可以先使用此命令查询:
rpm –q telnet-server
(1)启动和停止Telnet服务
Telnet不像其它服务(如HTTP和FTP等)一样作为独立的守护进程运行,它使用xinetd程序管理,这样不但能提高安全性,而且还能使用xinetd对Telnet服务进行配置管理。
Telnet服务安装后默认并不会被xinetd启用,可以通过修改文件/etc/xinetd.d/telnet将其启用。编辑文件/etc/xinetd.d/telnet,找到语句disable=yes,将其改为disable=no即可。
(2)Telnet服务的配置
1. Telnet服务最大连接数
可以通过编辑文件/etc/xinetd.d/telnet,在花括号{}中添加语句instances=3来配置telnet服务的最大连接数,这里的3指telnet服务同时只允许3个连接。
2. Telnet服务的端口
Telnet服务默认的端口为23,出于安生性考虑,可以更改服务器监听的端口,通过编辑文件/etc/services来修改各个服务的端口,找到telnet选项,修改其数值即可。如要改为2323,即:
telnet 2323/tcp
telnet 2323/udp
1.2 Telnet客户端的使用
通过telnet命令即可登录
如Telnet服务器的IP地址为192.168.1.109
在客户端(windows和linux)命令行里输入:
telnet 192.168.1.109
然后输入用户和口令即可,在这里,系统不允许root用户通过telnet登录,所以这个用户是除root用户的其它用户,登录后可以使用su – 命令切换成root用户,这样就OK了。
二、SSH协议
Telnet协议在带来便利性的同时,也带来了许多安全问题,最突出的就是Telnet协议使用明文的方式传送所有的数据(包括账号和口令),数据在传输过程中很容易被入侵者窃听或篡改所以建议使用更安全的其它的服务
SSH是目前通常使用的远程管理协议,它是一个在应用程序中提供安全通信的协议,通过SS可以安全地访问服务器,因为SSH基于成熟的公钥加密体系,把所有传输的数据进行加密,保证数据在传输时不被恶意破坏、漏露和篡改。
2.1 SSH服务的安装
Linux下广泛使用免费的OpenSSH程序来实现SS协议,它同时支持SSH1和SSH2协议,Openssh软件包包括两部分:openssh-server和openssh-client,它们分别打包在不同的RPM包中,同时都需要依赖openssh软件包工作,不用说,都能猜到这两个包的用途了吧
可以使用如下命令检查是否已经安装OpenSSH
rpm –q openssh-server
(1)SSH服务的配置
配置SSH服务的运行参数,主要是通过修改配置文件/etc/ssh/sshd_config来实现的,这里面的选项特别多,但大部分都是使用#注释的,这是因为SSH服务使用默认配置已经能够很好的工作了
-
1 设置SSH服务监听的端口号
-
#port 22
-
2 设置使用SSH协议的顺序
-
#protocol 2,1
-
3 设置SSH服务器绑定的IP地址
-
#listenaddress 0.0.0.0
-
4 设置是否允许root管理员登录
-
#permitrootlogin yes
-
5 设置是否允许空密码用户登录
-
#permitemptypasswords no
-
6 设置是否使用口令认证方式
-
#passwordauthentication yes
-
每次修改配置文件/etc/ssh/sshd_config后,都需要重新启动SSH服务才能使新的配置生效。
(2)启动和停止SSH服务
/etc/init.d/sshd start|stop|restart|status
2.2 SSH客户端的使用
(1) linux客户端
在linux客户端,可以使用命令ssh登录,如果SSH服务器的IP地址为192.168.1.109,登录命令如下:
ssh 192.168.1.109
根据提示输入口令即可,这个口令是root用户的口令,所以登录之后就是root用户身份了。
(2)windows客户端
在windows客户端是无法使用ssh命令的,但是有许多SSH客户程序,推荐使用免费的PuTTY程序,它小
巧好用,而且是一款无需安装的绿色软件。
2.3 使用基于公钥的认证
首先由用户生成一对密钥,然后将公钥保存在SSH服务器用户主目录下.ssh子目录中的authorized_keys文件中,私钥保存在本地计算机中,当用户登录时,服务器检查authorized_keys文件是否与用户的私钥对应,如果相符则允许用户登录,否则拒绝用户的登录请求。由于私钥只保存在用户的计算机中,因此入侵者就算得到用户的口令,也不能登录到服务器。
2.4 在服务器端启用公钥认证
编辑文件/etc/ssh/sshd_config,找到语句passwordauthentication yes ,将其值改为passwordauthentication no即可。
(1)windows客户端
产生密钥
运行下载的puttygen.exe文件,选择加密的算法,推荐选择ssh-2-RSA算法,然后选择加密的位数,推荐用1024位的,然后点击生成按钮,在产生密钥过程中,为了生成一些随机数,应该随意的移动鼠标,生成密钥后,出于安生性考虑,输入保护私钥的口令。然后分别保存私钥和公钥,例如保存的私钥名为private.ppk,公钥名为public.pub,将私钥保存在本地计算机上,将公钥发送到SSH服务器端的/root/.ssh目录下,即/root/.ssh/public.pub,由于puttygen产生的公钥文件格式与openssh程序使用的格式不兼容,因此还可ssh服务器端对其进行转换,转换命令如下:
ssh-keygen -i -f /root/.ssh/public.pub>/root/.ssh/authorized_keys
使用此命令之的即可将公钥文件public.pub转换成openssh使用的格式。
2.5 连接SSH服务器
1 运行putty程序,在主机名里输入服务器的IP地址或域名,然后选择左边的连接——SSH——认证,在路径里找到保存的私钥文件,然后单击打开按钮进行连接
2 成功地连接到SSH服务器后,服务器会提示输入登录用户名,如果使用了保护私钥的口令短语,还会提示输入口令短语,登录过程中,不需要输入用户的口令。
(2)linux客户端
在linux客户端下,可以使用openssh软件包自带的ssh-keygen程序产生密钥,命令如下:
ssh-keygen -t rsa
执行后,会提示输入保存的路径和保护私钥的口令短语,默认保存在当前用户主目录下的.ssh子目录中,私钥文件名为id-rsa,公钥文件名为id_rsa.pub
然后传输公钥文件到服务器的用户主目录下的.ssh目录下,并改名为authorized_keys即可
连接SSH服务器
可以直接使用ssh命令连接到ssh服务器如:
ssh 192.168.1.109
根据提示输入用户名,还有口令短语(如果有的话),即可登录了。
三、VNC协议
Telnet和SSH服务只能实现基于字符界面的远程控制,利用VNC可以实现图形化的远程控制。VNC是virtual network computing的缩写,也就是虚拟网络计算机,VNC软件由两个部分组成:VNC server和VNC viewer,用户需要将VNC server安装在被控制的计算机上,然后在主控制端执行VNC viewer控制被控制端。
可以用如下命令查询VNC服务是否安装
rpm -q vnc-server
3.1 启动vnc服务
启动vnc服务的命令格式为:vncserver : 桌面号,其中桌面号用数字表示,每个用户需要占用一个桌面,如果启动桌面号为1的桌面可以执行如下命令:
vncserver :1
vnc服务使用的TCP端口号从5900开始例如桌面号为1,则使用的端口号为5901,桌面号为2,则使用的端口号为5902,以此类推,基于java的vnc客户程序web服务TCP端口号从5800开始,即5801、5802,以此类推
3.2 配置多个桌面号
如果需要多个用户同时连接到VNC,可以多次执行vncserver命令,并将桌面号从:1改为:2、:3,以此类推。
使用vncserver命令创建的桌面号会在服务器重新启动后失效,服务器每次启动完都需要重新建立,这样很不方便,可以将它们添加到配置文件/etc/syscofnig/vncserver中,格式为:
vncserver=“1:root”
vncserver=“2:tom”
添加完成后,vnc服务每次启动时都会自动创建这些桌面号。
3.3 启动和停止vnc服务
可以使用如下命令:
service vncserver start|stop|restart|status
3.4 vnc客户端的配置
(1)linux客户端
在linux客户端,可以通过安装vnc viewer来动进行连接,安装方法和vnc server相似,安装好之后在附件里打开vnc viewer,输入IP地址或域名和桌面号,单面连接即可进行连接了。
(2)windows客户端
在windows客户端,可以通过浏览器直接进行连接,例如vnc服务器的IP地址为192.168.1.109,可以在浏览器里输入IP地址加端口号进行连接:
192.168.1.109:5801
表示连接ip地址为192.168.1.109的vnc服务器的1号桌面。
也可以通过程序进行连接,推荐使用TightVNC程序,它包括了vnc客户和vnc服务器程序。
其安装方法比较简单,不再多说了,输入vnc服务器的IP地址或域名和桌面号之后,点击连接,输入访问口令进行登录之后就可以在windows下以图形化的方式远程控制linux了。
一、SSH
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提供一个安全的“通道”。
二、Telnet
Telnet是什么协议?
Telnet服务器软件是我们最常用的远程登录服务器软件,是一种典型的客户机/服务器模型的服务,它应用Telnet协议来工作。那么,什么是Telnet协议?它都具备哪些特点呢?
Telnet是位于OSI模型的第7层---应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP协议。就是说他是一种基于TCP的应用层协议。这一协议需要通过用户名和口令进行认证,是Internet远程登陆服务的标准协议。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。它提供了三种基本服务:
1)Telnet定义一个网络虚拟终端为远程系统提供一个标准接口。客户机程序不必详细了解远程系统,他们只需构造使用标准接口的程序;
2)Telnet包括一个允许客户机和服务器协商选项的机制,而且它还提供一组标准选项;
3)Telnet对称处理连接的两端,即Telnet不强迫客户机从键盘输入,也不强迫客户机在屏幕上显示输出。
Telnet有什么用?
Telnet提供远程登录功能,使得用户在本地主机上运行Telnet客户端,就可登录到远端的Telnet服务器. 在本地输入的命令可以在服务器上运行,服务器把结果返回到本地,如同直接在服务器控制台上操作. 这样就可以在本地远程操作和控制服务器。
1)在用户终端与远程主机之间建立一种有效的连接;
2)可以共享主机上的软件和数据资源;
3)可以利用远程主机上提供的信息查询服务进行信息查询;
Telnet系统组成?
Telnet由客户软件、服务器软件以及telnet通信协议等三部分组成。
Telnet客户软件运行在用户的计算机上。当用户执行Telnet命令进行远程登录时,客户软件将完成下列功能:
1)建立与远程主机的TCP连接。它在一个周知的23号TCP端口上打开一个套接字,如果远程主机上的Telnet服务器软件一直在这个周知的端口上侦听连接请求,则这个连接便会建立起来。
2)以终端方式为用户提供人机界面。
3)将用户输入的信息通过Telnet协议传送给远程主机。
4)接受远程主机发送来的信息,并经过适当的转换显示在用户计算机的屏幕上。
远程主机必须运行Telnet服务器软件,这样才能提供Telnet远程登录服务。Telnet服务器软件将完成下列功能:
1)通知网络系统已做好提供远程连接服务的准备。
2)不断地在周知的23号TCP端口上侦听用户的连接请求。
3)处理用户的请求。
4)将处理的结果通过Telnet协议返回给客户程序。
5)继续侦听用户的请求。
telnet本身是一种协议,所以在windows和linux之间是可以相互远程的。
三、Telnet与mstsc的区别
Telnet本身是一种应用层协议,故在使用Telnet时可以把它看成是一种系统命令。而且是是黑客的常用手法之一,且不会讲原有的操作用户踢下来(就是说你登陆了,别人都不知道),然而用mstsc登陆的话,就必须将现在正在使用的用户踢下来才可以。
TELNET一般是登录开放Telnet服务的机器的23端口;最老牌的TELNET软件为NetTerm,目前版本为4.2.e.4。
两者最明显的区别是登陆方式不同,TELNET 是文本方式的登陆,命令行操作;MSTSC是图象界面操作。