做为网络管理员,我们不可能总是在机房操作服务器,对于 windows 服务器,我们可以通过远程终端或 netmeeting 进行操作。但是对于 Linux 服务器呢?我们也可以使用远程工具进行操作,常用的远程管理服务有 telnet SSH VNC 等,这些远程管理服务虽然都能做远程管理用,但是他们在功能及使用方面还是各有千秋。今天我们就来谈谈使用这些不同的远程管理服务工具管理 Linux 服务器。
本文中的服务器 IP 地址为 192.168.99.9 ,服务器使用系统为: CentOS 5
 
一、 Telnet
1. 软件安装:
我们可以使用 rpm -qa|grep telnet 命令查询系统安装的 telnet ,如下图:
系统默认安装了 telnet 的客户端,没有安装 telnet 服务端, telnet 服务端是需要 xinetd 支持的,所以我们需要手动安装这两个程序包,如下图:
Linux——远程管理篇_第1张图片
2. 启动 Telnet 服务
使用命令 vi /etc/xinetd.d/telnet ,编辑 telnet 服务,将 disable=yes 该为 disable=no ,激活 telnet 服务。
Linux——远程管理篇_第2张图片
使用 service xinetd start 命令,启动 telnet 服务。
我们可以使用 telnet ip 命令来测试,比如 telnet 192.168.99.199 这台机,如下图,可以正常 telnet 192.168.99.199.
Linux——远程管理篇_第3张图片
我们再找一台 windows 的机器来 telenet 我们的 linux 服务,如下图,如果我们使用 root 帐号登录,会提示 login incorrect ,这是因为 telnet 默认不允许以 root 的身份 telnet 进入 linux 系统。
Linux——远程管理篇_第4张图片
3. 配置 telnet 服务
telnet 是明文传送口令和数据的,如果直接默认使用,将存在很大的安全风险,所以我们必须对 telnet 服务做一些限制。使用命令 vi /etc/xinetd.d/telnet 编辑 telnet 服务,如下图:
说明:
bind=192.168.99.9    # 本机的 IP 地址
only_from=192.168.99.0/24     # 只允许 192.168.99.0--192.168.99.255 这个网段的地址 telnet 进来,如果需要也可以设置只允许某台机器 telnet 进来。
no_access=192.168.99.{11,13}    # 不允许 192.168.99.11 192.168.99.13 这两个 IP 地址 telnet 进来。
access_times=8:00-12:00 14:00-16:00    # 每天只在这个时间段内开放 telnet 服务。
Linux——远程管理篇_第5张图片
4. 设置 telnet 端口
telnet 默认使用 23 端口进行通讯,这个大家都知道,也容易被一些别有用心的人利用,所以我们将需要更改默认端口以增加安全性,比如改为 2300
使用 vi /etc/services 命令,找到 telnet 23/tcp telnet 23/udp 改为 telnet 2300/tcp telnet 2300/upd ,如下图:
Linux——远程管理篇_第6张图片
5. 开启 root 用户登录
虽然 telnet 默认不允许使用 root 用户登录,但是我们还是可以开启它,使用命令 mv /etc/securetty  /etc/securetty.bak ,重启 telnet 服务,现在就可以使用 root 用户登录了。如下图所示,不过,不建议开通 root 用户的登录权限,这样会增加安全风险。
Linux——远程管理篇_第7张图片
 
 
二、 OpenSSH
由于 telnet 采用明文传输,在安全性方面存在较大的隐患,所以现在正在被另一种远程管理服务— SSH 服务取代。 SSH 采用加密的传输,而且在用户认证方式上,可以使用公共密钥加密法,整体安全性得到提高。下面我们就来看看 SSH 服务的相关内容:
1. 软件安装
系统已经默认安装了 OpenSSH ,我们可以通过命令 rpm -qa|grep openssh 来查看 openssh 的安装情况,如下图所示:
Linux——远程管理篇_第8张图片
2. 使用 windows 客户端登录服务器
windows xp 本身没有自带 ssh 客户端程序,所以我们需要在 windows 上安装 ssh 客户端程序,常用的 windows ssh 客户端软件有 WinSCP putty 等。 WinSCP 支持中文语言,而且提供了一个友好的图形操作界面,用户可以很方便操作它,下面我们先来介绍一下 WinSCP
如下图,填入主机名或 IP 地址就可以登录了:
Linux——远程管理篇_第9张图片
在登录的时候,会如果没有加载密钥 wenjian ,会弹出一个下图所示的警告窗口,由于我们现在还没有使用密钥认证,所以可以直接点是进去。
Linux——远程管理篇_第10张图片
WinSCP 提供了一个类似 windows 资源管理器的界面,如下图:用户可以通过它很方便的执行文件操作,比如上传、下载,文件、目录重命名等工作。
Linux——远程管理篇_第11张图片
WinSCP 也提供了一个用于执行命令的控制台,如下图,不过,使用起来感觉不是很方便。
Linux——远程管理篇_第12张图片
如果要像在 Linux 下那样方便的使用命令行来操作,还是使用 PuTTY 比较方便。如下图,输入计算机名或 IP 地址,就可以连接 SSH 服务器了。
Linux——远程管理篇_第13张图片
在连接过程中,也会弹出一个警告对话框,提示密钥问题,我们还是点 yes 继续。如下图:
Linux——远程管理篇_第14张图片
系统连接上后,会提示要输入用户名和密码,输入正确的用户名和密码后,就可以像在 linux 中一样使用命令行对它进行操作了。默认情况下,是允许使用 root 帐户登录的。如下图:
Linux——远程管理篇_第15张图片Linux——远程管理篇_第16张图片
3. 配置 SSH 服务
在默认情况下,我们已经可以使用客户端登录 ssh 服务器了,不过,直接使用还是有安全隐患,所以我们还需要继续对 SSH 服务进行配置:
1 )使用命令 vi /etc/ssh/sshd_config 配置 SSH 服务,修改以下行(用红线框住的行):
Protocol 2         # 默认支持 SSH1 SSH2 ,修改后,只使用 SSH2
ServerKeyBits 1024       # ServerKey 强度改为 1024 比特
Linux——远程管理篇_第17张图片
PermitRootLogin no    # 修改后,不允许使用 root 进行登录
PasswordAuthentication no    # 修改后,不允许以密码方式登录
PermitEmptyPasswords no    # 修改后,禁止空密码登录
Linux——远程管理篇_第18张图片
2 )系统默认是允许所有地址连接 SSH 服务器的,所以我们还需要对访问地址进行限制:
使用命令 vi /etc/hosts.deny ,修改屏蔽规则,在末尾加上: sshd ALL ,屏蔽来自所有的 SSH 连接请求。
Linux——远程管理篇_第19张图片
现在所有电脑都不能连接 SSH 服务器,所以我们还需要使用命令 vi  /etc/hosts.allow 修改允许规则,在行尾加入一条: sshd:192.168.99. ,允许来自 192.168.99.0/24 这个网段的 SSH 连接请求,当然在这里也可以设置只允许部分 IP 地址的 SSH 连接,这个大家可以根据自己的需求进行设置。
Linux——远程管理篇_第20张图片
设置完成后,需要重启 SSH 服务才能生效。
Linux——远程管理篇_第21张图片
我们再用 PuTTY 连接一下,无法登录了。因为现在已经不能用密码验证了,需要使用“钥匙”了。
Linux——远程管理篇_第22张图片
4. 公钥和私钥的建立
切换到一个普通用户,基于这个用户建立公钥和私钥。(这里我以 admin 这个自建的帐户为例),操作过程如下图:
Linux——远程管理篇_第23张图片
公钥和私钥建立好后,还需要做一些处理,如下图:
Linux——远程管理篇_第24张图片
OK ,现在已经配置完成。下一步,我们需要将私钥复制到客户端电脑上,私钥文件存放地点: /home/admin/.ssh/id_rsa
5. 转换来自服务器端的私钥
由于服务器生成的私钥不能被客户端直接使用,我们还需要对私钥进行转换。下面我们就以最常用的 PuTTY 客户端为例进行说明。
对于 PuTTY 客户端,我们可以使用 PuTTYGen 这款工具对私钥进行转换。
运行 PuTTYGen ,然后点击 Load ,载入私钥,如下图:
Linux——远程管理篇_第25张图片
开始转换,这时会弹出一个对话框,要求输入在服务器端建立此私钥时的口令,如下图:
Linux——远程管理篇_第26张图片
转换完成后,会弹出一个转换成功的对话框,如下图:
Linux——远程管理篇_第27张图片
点击“ Save private key ”保存私钥,如下图:私钥转换完成。
Linux——远程管理篇_第28张图片
6. 使用 putty 登录服务器
打开 PuTTY 工具,在左面板上点击 Auth (认证方式),然后点击右面板上的 Browse ,加载刚才转换后的私钥,如下图:
Linux——远程管理篇_第29张图片
然后点击左面板的 Session ,回到主机连接信息对话框,如下图:
 Linux——远程管理篇_第30张图片
在“ Host Name ”项填入主机名或 IP 地址,然后在“ Saved Sessions ”项填入此连接的名称(可以是任意名称),然后点击 Save ,保存主机连接设置,如下图:
Linux——远程管理篇_第31张图片
双击新建立的连接,输入用户名和密码就可以连接了。注意:这里的密码不是用户密码,而是刚才建立私钥时设置的密码。
Linux——远程管理篇_第32张图片
OK ,通过“钥匙”方式登录 SSH 服务器的设置至此完成。
这里还有一点需要注意的:如果要允许某个用户使用 SSH 连接服务器,就必须基于这个用户建立对应的公钥和私钥。
 
三、 VNC
使用 SSH 可以安全的连接到 Linux 服务器,但是如果连接中断,那么连接过程中执行的命令也会中止。在使用 SSH 连接过程中执行一些程序时,中断是很危险的,可能对系统造成一定的影响。所以,我们还需要考虑另外的一种解决方案,以便一些特殊情况下使用。 VNC 刚好可以满足这个需求,使用 VNC 连接,在网络中断的情况下,原来执行的命令等不会受到影响,系统会继续执行。而且 VNC 可以提供一个完整的 Linux 操作界面,通过它,可以像操作本机一样操作 Linux 服务器。下面我们就来看看使用 VNC 连接的情况:
1. 软件安装
我们可以使用命令 rpm -qa|grep vnc 检查 vnc 的安装情况,系统已经默认安装了。如果系统没有安装,可以在安装光盘上找到该程序包。使用 rpm 安装就可以了。
2. 启动 VNC 服务
使用命令 vncserver :1 就可以启动 VNC 服务了,其中,“数字” 1 表示桌面号。第一次执行时,会需要输入连接密码,该密码保存在 /root/.vnc/passwd 中;同时在用户主目录下的 .vnc 子目录中为用户自动建立 xstartup 配置文件,在每次启动 VNC 服务时,都会读取该文件中的配置信息。
Linux——远程管理篇_第33张图片
我们通过 windows VNC Viewer 输入“ 192.168.99.9: 1 ,然后点击OK ,输入密码就可以通过 VNC 连接服务器了。
Linux——远程管理篇_第34张图片
Linux——远程管理篇_第35张图片
如下图,已经连接到了 Linux 服务器,不过由于使用的是 x-windows 的桌面环境,所以界面看起来不美观。另外,除了使用 VNC Viewer 进行登录,我们还可以使用浏览器进行连接,不过,需要先安装 Java 支持环境和 VNC viewer for Java
Linux——远程管理篇_第36张图片
3. 配置 VNC 桌面环境为 KDE GNOME 桌面环境
VNC 服务默认使用 twm 图形桌面环境,刚才我们已经看到了,不美观。还好,我们可以修改它,使用命令: vi  /root/.vnc/xstartup
Linux——远程管理篇_第37张图片
将最后一行的 twm 改为 startkde 则修改为 KDE 桌面环境,修改为 gnome-session 则为 GNOME 桌面环境。比如,我们将它改为 KDE 桌面环境,如下图:
Linux——远程管理篇_第38张图片
重启 VNC 服务,如下图:
Linux——远程管理篇_第39张图片
我们再用 VNC Viewer 连接,现在出现的就是 KDE 桌面环境了,如下图:
Linux——远程管理篇_第40张图片
4. 配置多个桌面环境
使用命令 /etc/sysconfig/vncservers 修改配置文件(修改部分见红色框内),如下图:
这里我们将桌面 1 设置为 root 用户的桌面,桌面 2 设置为 admin 用户的桌面。
Linux——远程管理篇_第41张图片
注意:设置好后,需要以对应用户的身份登录,手动执行一次 vncserver : 命令,以初始化 $HOME/.vnc/xstartup $HOME/.vnc/passwd 文件。
Linux——远程管理篇_第42张图片
Linux——远程管理篇_第43张图片
以后启动的话,可以使用 /etc/init.d/vncserver start 命令,现在可以使用 VNC Viewer 登录了:
Linux——远程管理篇_第44张图片
5. 修改 VNC 访问密码:
我们可以通过命令 vncpasswd 修改用户的连接密码,注意,如果有多个不同的用户,需要在不同用户的用户环境下修改其连接密码。
 
OK ,三种不同的远程管理服务都已经介绍完了,大家在日常工作中可以根据自己的需要对服务器进行相应的配置,以便更好的进行远程管理。