首页 > 代码库 > Linux -- Telnet、SSH和VNC协议的配置与应用

Linux -- Telnet、SSH和VNC协议的配置与应用

  • Telnet概述及配置

Telnet协议是TCP/IP协议族中应用最广泛的协议之一,提供一个以联机方式访问网际网上资源的通用工具,它允许用户与一个远程机器上的服务器进行通信,通过一个协商过程来支持不同的物理终端,从而提供了极大的灵活性。Telnet协议可以在任何主机(任何操作系统)或任何终端之间工作。各种操作系统都内置了Telnet协议的客户端软件,不需要安装,使用方便。

Telnet的工作原理如图2.1所示。

104412763.jpg


当用Telnet登录进入远程计算机系统时,将启动两个程序,一个叫Telnet客户程序,它运行在用户的本地机上;另一个叫Telnet服务器程序,它运行在用户要登录的远程计算机上。本地机上的客户程序要完成如下的功能:


建立与服务器的TCP连接;
从键盘上接收输入的字符;
把输入的字符串变成标准格式并送给远程服务器;
从远程服务器接收输出的信息;
把该信息显示在屏幕上。

远程Telnet服务器的Telnet服务程序监听客户端连接,一接到连接的请求,就马上活跃起来,并完成如下的功能:


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

在Internet中,很多服务都采取这样一种客户/服务器结构。

Telnet连接的双方都是网络虚拟终端NVT(NetworkVirtualTerminal),但实际上Telnet连接双方首先进行交互的信息是选项协商数据。选项协商是对称的,也就是说任何一方都可以主动发送选项协商请求给对方。

对于任何给定的选项,连接的任何一方都可以发送下面4种请求的任意一种请求。

1.WILL:发送方本身将激活(Enable)选项。

2.DO:发送方想让接收端去激活选项。

3.WONT:发送方本身想禁止选项。

4.DON’T:发送方想让接收端去禁止选项。


 配置Telnet

Telnet服务的常用配置如下:

1.设置Telnet服务端口

Telnet服务器默认在23端口监听所有客户机的连接,为了使系统更安全,可以更改服务器监听的端口。
编辑文件/etc/services,命令如下:


  [root@MyRedHat ~]#vi /etc/services

进入编辑模式后查找telnet(vi编辑方式下输入/telnet),会找到如下内容:

telnet 23/tcp 
telnet 23/udp

将端口号23修改成其他未使用的端口号(如:4000),如图2.7所示,保存退出vi,重启xinetd服务,telnet默认的端口号就被修改了。更改了Telnet默认端口号后,客户机连接时需要使用如下命令来连接:


telnet 服务器IP/域名 端口号


2.设置Telnet服务最大连接数

Telnet服务默认没有限制同时连接到服务器的终端数目,可以设置Telnet服务的最大连接数。具体步骤如下:

编辑/etc/xinetd.d/telnet文件,命令如下:

 [root@MyRedHat ~]# vi /etc/xinetd.d/telnet

在花括号“{}”中添加语句“instances=5”,表示Telnet服务最多可以同时连接3个终端,如图2.8所示。保存退出vi,重启xinetd服务,Telnet服务最大连接数就被修改了。

3.Telnet服务限制

telnet是明文传送口令和数据的,如果你对其默认的设置不满意,有必要对其服务范围进行限制。

编辑/etc/xinetd.d/telnet文件,命令如下:

   [root@MyRedHat ~]# vi /etc/xinetd.d/telnet

在花括号“{}”中添加限制命令语句。

例1:允许登录IP地址段。

only_from = 210.45.0.0/16          #只允许 210.45.0.0 ~ 210.45.255.255 这个网段进入 
only_from = .edu.cn                #只有教育网才能进入!

例2:登录IP限制。


access_times= 8:00-12:00 20:00-23:59 # 每天只有这两个时间段开放服务

4.Telnet root用户的登入

在默认的情况下是不允许root账号使用Telnet登录Linux主机的,要允许root账号的登入,可用下列方法:

    [root@MyRedHat ~]# vi /etc/pam.d/login

将“auth required pam_securetty.so”这一行加上注释符(#),改为:


  # auth required pam_securetty.so

[root@MyRedHat ~]# mv /etc/securetty  /etc/securetty.bak


  • SSH   概述及配置


SSH(SecureShll)是强化安全的远程登录方式,过去使用的rsh和telnet,因为包括登录时的ID和密码数据没有加密就传到网络上,存在安全上的问题。即使在内部网上,也有在因特网上的窃取和篡改等危险性。SSH将包括密码在内的所有数据都已进行了加密处理,可以进行更安全的远程操作。在SSH中,由于协议标准的不同而存在SSH1和SSH2两个不同的版本。SSH2是为了回避SSH1所使用的加密算法的许可证问题而开发的(现在这一许可证问题已经不存在了)。TLES 8中作为安装SSH协议的应用程序采用了开放源码的OpenSSH。OpenSSH与SSH1和SSH2的任何一个协议都能对应,但默认使用SSH2。

安装与启动SSH

1.安装OpenSSH

Linux下广泛使用免费的OpenSSH程序来实现SSH协议,OpenSSH同时支持SSH1和SSH2协议。目前几乎所有的Linux发行版都捆绑了OpenSSH,RedHat也不例外,默认RedHat的安装程序会将OpenSSH服务和客户程序安装在系统上。请使用下面的命令检查系统是否已经安装了OpenSSH服务:

[root@MyRedHat ~]# rpm -qa|grep openssh

如果系统还没有安装OpenSSH服务,可以把Red Hat Enterprise Linux的第二张安装光盘,放入光盘进行装载,然后安装其包含ssh关键字的5个包。命令如下:

[root@MyRedHat ~]# rpm –ivh openssh-2.9p1-8.
RHEL4.1.i386.rpm
[root@MyRedHat ~]# rpm –ivh openssh-askpass-
gnone-2.9p1-8.RHEL4.1.i386.rpm
[root@MyRedHat ~]# rpm –ivh openssh-clients-
2.9p1-8.RHEL4.1.i386.rpm
[root@MyRedHat ~]# rpm –ivh openssh-server-
2.9p1-8.RHEL4.1.i386.rpm
[root@MyRedHat ~]# rpm –ivh openssh-askpass-
2.9p1-8.RHEL4.1.i386.rpm

2.启动停止SSH服务

OpenSSH的实体是sshd这一守护程序。sshd在系统启动时由启动原程序(/etc/init.d/sshd)自动启动。进行启动/停止SSH服务等操作时,可以通过这个原程序进行操作,也可以使用service命令。

主要选项如表2.4所示。

表2.4  OpenSSH-/etc/init.d/sshd

wKioL1QamhLB8r-XAAAMrJN4kbQ445.png

3.设置自动运行SSH服务

让系统每次启动时自动运行SSH服务,可以执行“ntsysv”命令启动服务配置程序,在出现的对话框中找到“sshd”服务,然后按“空格”键在其前面加上“*”星号,按“Tab”键选择“确定”按钮保存即可,如图2.10所示。

125019247.jpg

另外,要使启动系统时sshd 不会自动开始,可以执行如下命令:

 [root@MyRedHat ~]# chkconfig sshd off


配置SSH

OpenSSH的设置文件和主要文件存放在/etc/ssh/目录中。各文件的概述如下表2.5所示。

wKiom1QamlOQMK_qAAAl4UDpzho278.png

SSH服务器守护程序sshd的设置文件是/etc/ssh/sshd_config,SSH客户机的设置文件是/etc/ssh/ssh_config。常用的配置如下:


1.设置SSH服务监听的端口号

Port选项定义了SSH服务监听的端口号,SSH服务默认监听的端口号是22。

 #Port 22

2.设置使用SSH协议的顺序

Protocol选项定义SSH服务器使用SSH协议的顺序,默认先使用SSH2协议,如果不成功则使用SSH1协议。

  #Protocol 2,1

3.设置SSH服务器绑定的IP地址

ListenAddress选项定义SSH服务器绑定的IP地址,默认绑定服务器所有可用的IP地址:

#ListenAddress 0.0.0.0

4.设置是否允许root管理员登录

PermitRootLogin选项定义是否允许root管理员登录,默认允许管理员登录。

PermitRootLogin yes

5.设置是否允许空密码用户登录

PermitEmptyPasswords选项定义是否允许空密码的用户登录。出于服务器安全的考虑,应该禁止空密码用户登录,默认是禁止空密码用户登录。

 PermitEmptyPasswords no

6.设置是否使用口令认证方式

PasswordAuthentication选项定义了是否使用口令认证方式,如果准备使用公钥认证方式,可以将其设置为no。

 PasswordAuthentication yes

SSH的密钥管理

1.生成密钥对

用下面的命令可以生成公钥/私钥对:

  ssh-keygen t 类型

在同一台主机上同时有SSH1和SSH2的密钥是没有问题的,因为密钥是存在于不同文件中的。生成公钥/私钥对命令为:

[root@MyRedHat ~]# ssh-keygen -t rsa

生成公钥/私钥的保存路径默认情况下为:/home/[user]/.ssh/id_dsa(私人密钥)和/home/[user]/.ssh/id_dsa.pub(公用密钥)。现在用户有一对密钥了:公用密钥要分发到所有用户想用SSH登录的远程主机上去;私人密钥要好好地保管,以防止别人知道。用“ls -l ~/.ssh/identity”或“ls -l ~/.ssh/id_dsa”命令所显示的文件的访问权限必须是“-rw-------”。

如果用户怀疑自己的密钥已经被别人知道了,应该马上生成一对新的密钥。当然,这样做之后还需要重新分发一次公用密钥,才能正常使用。

2.分发公用密钥

在每一个用户需要用SSH连接的远程服务器上,都要在自己的主目录下创建一个“.ssh”的子目录,把用户的公用密钥“identity.pub”拷贝到这个目录下并把它重命名为“authorized_keys”。然后执行修改权限命令:

 chmod 644 .ssh/authorized_keys

这一步是必不可少的。因为,如果除了用户之外别人对“authorized_keys”文件也有写的权限,那么如果遭到非法的破坏,SSH就不能正常工作。

如果用户想从不同的计算机登录到远程主机,“authorized_ keys”文件也可以有多个公用密钥。在这种情况下,必须在新的计算机上重新生成一对密钥,然后把生成的“identify.pub”文件拷贝并黏贴到远程主机的“authorized_keys”文件里。当然,在新的计算机上用户必须有一个账号,而且密钥是用口令保护的。有一点很重要,但是当用户取消了这个账号之后,必须要把这一对密钥删掉。

配置SSH客户端

在Linux客户端下使用SSH,优点是操作更方便,无须其他软件,但缺点是不太直观。用户只需要使用系统提供的默认的配置文件“/etc/ssh/ssh_config”,并且使用如下简单的命令即可登录:

 #ssh 服务器的IP地址或域名

下面主要介绍配置使用Windows环境下的PuTTY工具来登录SSH服务器。该软件可以从网址:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html上免费下载。目前网上的最新版本为: putty 0.58,对该版本进行安装后,进行如下步骤的配置:

1.运行putty.exe,主界面显示如图2.12所示。

2.在该界面的右半区域的“主机名称(或IP地址)”文本框中输入所要远程登录的主机名称或者服务器IP地址,在“端口”文本框中输入默认的端口号22,选择“协议”为“SSH”,填写“保存会话”文本框,然后单击“保存”按钮,保存输入配置,如图2.13所示。

131406807.jpg

131417494.jpg

3.单击“打开”按钮,该软件连接服务器,显示连接结果,用户输入用户名密码登录后就可以进行相应的远程管理操作了,如图2.14所示。

131429111.jpg

配置SSH自动登录

在上面介绍的SSH的使用过程中,用户每次登录服务器都需要输入密码,这对于用户来说未免有些麻烦。由于SSH充分使用了密钥机制,那么就可以通过一定的系统配置,而达到一次配置,以后都不用输入密码,方便登录的目的。下面以Windows的客户端为例,说明如何对SSH的自动登录进行配置。

在Windows下,使用前面介绍的客户端软件putty同样可以方便地实现自动登录,主要是使用putty工具套件自带的puttygen工具,产生公钥/私钥对来实现,原理与Linux下相同,下面详细介绍配置SSH的步骤:

1.运行puttygen工具

运行puttygen.exe,启动puttygen工具,准备生成公钥/私钥对,如图2.15所示,选择生成SSH2 RSA的密钥类型。

2.生成密钥

单击“生成”按钮,则进入公钥/私钥对生成界面,用户需要在界面空白处不断地移动鼠标,以保证钥匙生成的随机性能,如图2.16所示。

1326050.jpg

1326051.jpg

3.保存密钥

成功生成公钥/私钥对后,处于安全行考虑,程序会提示输入保护密钥的密码,如图2.17所示,系统提示用户保存公钥/私钥对。单击“保存公钥”按钮和“保存私钥”按钮,分别指定路径保存公钥以及私钥。

4.传输公钥文件到SSH服务器

使用putty连接上服务器后,将公钥文件的内容拷贝到服务器的相应主目录下。

5.转换公钥文件

由于PuTTYgen产生的公钥文件格式与OpenSSH程序使用的格式不兼容,可以使用ssh-keygen程序转换,转换命令如下:

ssh-keygen –i –f  /root/.ssh/putty-public.pub>/root/
.ssh/authorized_keys

其中putty-public.pub为PuTTYgen生成的公钥文件,该命令将putty-public.pub转换成OpenSSH程序使用的格式,并将结果重定向到authorized_keys文件中。

6.连接登录SSH服务器

使用PuTTY自动登录SSH服务器只需要在PuTTY程序对话框的左边选择“连接”→“SSH”→“Auth”,在“Private key file for authentication”文本框中输入私钥文件的路径,如图2.18所示,然后单击“Open”按钮连接。PuTTY在登录过程中,服务器会提示输入登录用户名,如果使用了保护私钥密码,则会提示输入密码。在整个登录过程中不需要输入用户的口令。

1326052.jpg


1326053.jpg



  • VNC   概述及配置


VNC(virtual network computing),是一种由AT&T开发的远程控制的技术,可以运行于局域网和Internet,将远端的图形桌面,显示到本地终端。

VNC软件主要由两部分组成:一部分是客户端的应用程序(vnc viewer),另外一部分是服务器端的应用程序(vncserver)。VNC的基本运行原理和一些Windows下的远程控制软件很相像。VNC的服务器端应用程序在UNIX和Linux操作系统中适应性很强,图形用户界面十分友好。在任何安装了客户端应用程序(vncviewer)的Linux平台的计算机都能十分方便地和安装了服务器端应用程序(vncserver)的计算机相互连接。另外,服务器端(vncserver)还内建了Java Web接口,这样用户通过服务器端对其他计算机的操作就能通过Netscape显示出来了,这样的操作过程和显示方式比较直观方便。

1.VNC安装

默认Red Hat Enterprise Linux的安装程序会将VNC服务和客户程序安装在系统上,可以使用下面的命令检查系统是否已经安装了VNC服务:

[root@MyRedHat ~]#rpm -q vnc-server

如果系统还没有安装VNC服务,可以把Red Hat Enterprise Linux的第二张安装光盘放入光驱进行加载,加载光驱后在光盘的RedHat/RPMS目录下找到VNC的安装包文件vnc-server-4.0-8.1.i386.rpm,可以使用下面的命令进行安装:

[root@MyRedHat ~]# cd /mnt/cdrom/RedHat/RPMS
[root@MyRedHat ~]# rpm –ivh vnc-server-4.0-8.1.i386.rpm

2.启动VNC

VNC服务可以由启动源程序(/etc/init.d/vncserver)自动启动。进行启动/停止VNC服务等操作时,可以通过这个源程序进行操作,也可以使用service命令。

主要选项如表2.6所示。

表2.6  VNC服务-/etc/init.d/vncserver

[root@MyRedHat ~]# service vncserver start  (stop;restart;status)

3.设置自动运行VNC

让系统每次启动时自动运行VNC服务,可以执行“ntsysv”命令启动服务配置程序,在出现的对话框中找到“vncserver”服务,然后按“空格”键在其前面加上“*”星号,按“Tab”键选择“确定”按钮保存即可,如图2.20所示。

133844255.jpg

另外,要使启动系统时VNC服务不自动开始,可以执行如下命令:

   [root@MyRedHat ~]# chkconfig vncserver off

4.使用VNC


在服务器端可以用vncserver命令来启动VNC服务,命令格式为:vncserver :桌面号。例如:

  [root@MyRedHat ~]# vncserver :1

命令运行结果如图2.21所示,命令中“vncserver”和“:1”之间需要使用空格符隔开,其中参数“:1”表示桌面号。如果是第一运行该命令,系统会提示用户输入访问密码并确认输入密码,密码将会被加密保存在用户主目录下.vnc目录中的passwd文件中,同时系统还会在用户主目录下的.vnc目录中为用户自动创建xstartup配置文件,以后每次启动VNC服务时,都将会读取该文件中的配置选项。如果需要多个用户同时连接到VNC服务,可以再执行vncserver命令,将其中参数“:1”改为“:2”或“:3”,依次类推,这时VNC服务会启动多个桌面,而且用户们能互不干扰地使用各自的桌面。

VNC服务使用的端口号与桌面号相关,VNC服务使用的端口从5900开始,例如桌面号是“:1”,则使用的端口是5901;桌面号是“:2”,则使用的端口是5902,依次类推。基于Java的VNC客户程序Web服务端口从5800开始,它也与桌面号相关。如果Linux服务器开启了防火墙功能,需设置允许TCP协议相应的端口通过或关闭防火墙功能,如可以使用以下命令:

[root@MyRedHat ~]# /sbin/iptables-IINPUT-ptcp
--dport5901-jACCEPT
[root@MyRedHat ~]# /sbin/iptables-IINPUT-ptcp
--dport5801-jACCEPT

5.客户端访问VNC

打开浏览器访问https://Linux服务器的IP或域名:5801/会出现“VNCviewerforJava”界面。同时还会出现一个连接对话框,在对话框中输入Linux服务器的IP或域名和桌面号后,单击“OK”按钮连接,然后输入访问口令进行登录,连接成功后会出现X-Windows图形桌面环境。

VNC配置

在默认情况下,VNC服务采用的图形界面为twm。为了使用GNOME或KDE图形桌面环境,还要编辑文件用户主目录下.vnc子目录中的xstartup文件(如/root/.vnc/xstartup),将最后一行的“twm”改为“gnome-session”或“startkde”,如图2.22所示,当然前提是系统已经安装了GNOME或KDE图形桌面环境。

修改完xstartup文件,还要执行以下命令关闭并重新启动桌面号。命令执行结果如图2.23所示。


[root@MyRedHat ~]# vncserver-kill:1
[root@MyRedHat ~]# vncserver:1

重新连接VNC服务,就会出现KDE图形桌面环境。

可以将用户和需使用的VNC桌面号添加到配置文件/etc/sysconfig/vncservers中,使服务器启动时自动创建管理这些桌面号,格式为:VNCSERVERS=“桌面号:使用的用户名”。如:

VNCSERVERS=“1:root” 
VNCSERVERS=“2:lhc”

配置VNC客户端

在浏览器中使用Java编写的VNC客户程序连接服务器虽然比较方便,但其缺点也比较明显,如最多只能支持256色、运行效率低和不支持远程协助功能。然而,安装客户程序VNCviewer可以提高VNC的运行效率。

1.Windows平台

在Windows平台下有许多VNC客户端程序,这里介绍RealVNC 4.26 汉化版的安装和使用,它包括VNC客户端和服务器程序。

下载地址为:http://www.onlinedown.net/soft/3195.htm。

安装RealVNC 4.26非常简单,运行RealVNC 4.26安装程序,按照默认值进行安装,可以取消复选框选择不安装VNC服务端,如图2.26所示。

135359865.jpg


然后单击“下一步”按钮,继续按默认完成安装。

安装完毕后,打开“开始”→“程序”→“RealVNC 汉化版”→“VNC Viewer 4”→“运行VNC浏览器”运行VNC客户端程序,如图2.27所示。接着,在打开的对话框中输入Linux服务器的IP或域名和桌面号,单击“确定”按钮开始连接。

如果设置了访问口令,会弹出“身份验证”对话框,如图2.28所示。

135430790.jpg

135457128.jpg

输入口令之后,单击“确定”按钮,就可以远程控制X-Windows了。

2.Linux平台

默认Red Hat Enterprise Linux的安装程序没有将VNC viewer安装在系统上,可以使用下面的命令检查系统是否已经安装了VNC viewer:

[root@MyRedHat ~]#rpm -q vnc

如果系统还没有安装VNC viewer,可以把Red Hat Enterprise Linux的第四张安装光盘放入光驱进行加载,加载光驱后在光盘的RedHat/RPMS目录下找到VNC的安装包文件vnc-4.0-8.1.i386.rpm,可以使用下面的命令进行安装:

[root@MyRedHat ~]# cd /mnt/cdrom/RedHat/RPMS
[root@MyRedHat ~]# rpm –ivh vnc-4.0-8.1.i386.rpm


安装完后,在X-Windows中打开“应用程序”→“附件”→“VNCViewer”来执行VNC viewer。


参考: http://book.51cto.com/art/200804/70583.htm 

本文出自 “Ricky's Blog” 博客,请务必保留此出处http://57388.blog.51cto.com/47388/1554826

Linux -- Telnet、SSH和VNC协议的配置与应用