前言:我们经常听见各种各样的协议,什么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了。