一、遠端管理的基本概念
首先我們來初略的講講遠端管理的一些基本概念。對于我們使用的計算機來說,如果是個人計算機,就沒有遠端管理這一概念了,想用的時候開機就能使用,而對于我們的伺服器來說,就不同了,對于伺服器其一般都是放置在我們的IDC機房當中,我們通常是無法直接接觸到伺服器硬體,那麼我們如果要對伺服器進行操作的話,就隻能通過遠端管理的方式來對我們的伺服器進行控制了。
目前我們常見的遠端管理控制方式主要有以下幾種:
①RDP(remote desktop protocol)協定 遠端桌面協定,我們常用的windows作業系統就是的遠端桌面管理就是基于該協定的,更多有關RDP協定的可以檢視百度百科 RDP
②telnet CLI界面下的遠端管理工具,因為其曆史非常悠久,幾乎所有的作業系統都有該工具(telnet在傳送資料時是通過明文傳輸的,沒有加密,是以現在幾乎都不會使用telnet來進行遠端管理了) telnet
③SSH(Secure Shell)協定 CLI界面下的遠端管理工具,幾乎所有的作業系統都有(差別于telnet,SSH在進行資料傳送時會對資料進行加密,是以SSH是比較安全的協定),幾乎所有的類UNIX作業系統都是采用SSH來進行遠端管理(Linux、BSD、Mac OS等)。 SSH
④RFB(Remote FrameBuffer)協定 圖形化遠端管理協定,VNC(Virtual Network Computing)就是基于該協定的,上面講的SSH在類UNIX下是CLI界面常用的遠端管理方式,那麼在類UNIX作業系統中,同樣存在圖形化的遠端管理工具,VNC就是類UNIX系統下常用的圖形化遠端管理工具
二、SSH
在之前的一篇随筆當中,也詳細講解了SSH的一些基本概念及原理 (Linux學習之CentOS(十四)--初識ssh),在這裡将對SSH的一些概念進行補充,以及講解一些SSH的一些常用指令。
SSH(Secure Shell)協定是Linux、Unix、Mac及其他網絡裝置最常用的遠端CLI管理協定,SSH在對資料進行傳送過程中會使用非對稱的加密算法來對資料進行加密,以此來保證遠端管理資料的安全
SSH2是目前廣泛使用的ssh版本,SSH協定是TCP協定,其占用的端口号是 22
我們絕大多數Linux版本預設使用的SSH是openssh,通過 ssh -V 指令可以檢視ssh的資訊
[root@xiaoluo ~]# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
SSH分為伺服器端和用戶端,對于伺服器端,SSH是預設開機啟動的,作為常駐服務存在,我們可以通過 service sshd status 指令來檢視
[root@xiaoluo ~]# service sshd status
openssh-daemon (pid 1578) is running...
我們可以通過 ssh 指令用以以SSH協定登陸其他主機,因為這裡我們的windows是沒有預設安裝ssh用戶端的,是以我這裡也是在虛拟機中的 centos 裡面遠端登入
我們可以通過 ssh [email protected] 指令來進行登陸,root是我們需要登陸的使用者名,@後面跟的是我們的ip位址

[root@xiaoluo ~]# ssh [email protected]
The authenticity of host '172.25.215.40 (172.25.215.40)' can't be established.
RSA key fingerprint is 53:61:a6:9c:32:92:85:12:1d:97:c9:2c:0c:9b:f6:3e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.25.215.40' (RSA) to the list of known hosts.
[email protected]'s password:

我們看到,當我們輸入該指令以後,其會提示我們是否生成一個密鑰,因為我們的SSH是加密的,是以我們輸入 yes ,此時就會給該遠端登入端生成一個加密的密鑰,這個密鑰是儲存在使用者家目錄下的 .ssh/ 目錄中,我們可以看一下裡面的内容:
[root@xiaoluo ~]# cat ./.ssh/known_hosts
172.25.215.40 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwOaEBlkF3n1+m/Dern0+cjoGFUDs68JRnuihDTKckxV1IuEsys1HX/YMp6fzjGzDAKd/dsWS0O9bwEmLgK1q8QobQHqUIp7a6VJe+6e3VCUDNhX6GB848O+xvYcgeZjVvMs37+RUvmy7YwQ9FrM5RLm9/RpAVf08gLHoqCleh1QJ2j33AfBNjsUUkrr4UQ3kKTuIJBnsyFHF9zpXHcgtcqGzgzaF7AfZw85DXC//5+cRNvF2wwXyEhbrYR3x50SG/f7FSqDd0JX8/+eMu3Wnmjv6dFZS7qt9s+nh7LUGqqy1lNncXxECFZa2HiSduWkwIW667LBsNVB1pIba7uBn/Q==
我們看到,其實這裡儲存的就是我們遠端登入管理的一個ssh密鑰。使用哪個使用者名登陸,就會在該使用者家目錄下生成有給密鑰,我們輸入使用者密碼,就能遠端登入上我們的主機了
我們可以通過 ssh [email protected] 指令遠端登入到我們的主機,我們有時如果登陸遠端主機隻是為了執行某條指令,此時我們可以直接在後面跟指令名字即可,例如 ssh [email protected] ls,這樣我們就隻會登陸遠端主機然後執行完指令就傳回了
對于其他一些常用的SSH指令,還有 scp 、rsync等這些指令
scp 指令是用以在兩台計算機之間進行快速的、加密的資料傳輸,指令的文法格式為:
scp 源檔案 目标位址
例如我們要将目前目錄下的 xiaoluo.txt 這個檔案複制到 172.25.215.40 這台主機的 /root 目錄下,我們可以使用如下指令:
[root@xiaoluo ~]# scp xiaoluo.txt [email protected]:/root/
這樣我們的檔案就會複制到172.25.215.40 這台主機的 root目錄下了,我們還可以為該指令加一些參數,例如 -R 遞歸、 -p 傳輸時保留檔案權限和時間戳 -C 傳輸時進行資料壓縮等參數。
對于其他一些與SSH相關的指令,我将在後面學習到的時候再詳細記錄
三、VNC
剛才講過,VNC(Virtual Network Computing)是一種Linux系統(或者BSD、Mac等)下常用的圖形化遠端管理工具,使用的是RFB協定
VNC跟SSH一樣,也分為用戶端與伺服器端,我們在需要被遠端通路的伺服器上安裝VNC的伺服器端,其他計算機上安裝VNC的用戶端程式與其進行連接配接
CentOS 6/RHEL 6中我們使用的是 tigervnc 來作為自帶的VNC工具,預設這個工具是沒有被安裝的,我們如果想要使用VNC服務,就必須根據一下的操作步驟:
①首先我們需要通過 yum 來安裝 tigervnc 這個工具

[root@xiaoluo ~]# yum install tigervnc-server
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: centos.ustc.edu.cn
* extras: mirror01.idc.hinet.net
* updates: centos.ustc.edu.cn
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package tigervnc-server.x86_64 0:1.1.0-5.el6_4.1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
tigervnc-server x86_64 1.1.0-5.el6_4.1 updates 1.1 M
Transaction Summary
================================================================================
Install 1 Package(s)
Total download size: 1.1 M
Installed size: 2.9 M
Is this ok [y/N]: y
Downloading Packages:
tigervnc-server-1.1.0-5.el6_4.1.x86_64.rpm | 1.1 MB 00:16
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : tigervnc-server-1.1.0-5.el6_4.1.x86_64 1/1
Verifying : tigervnc-server-1.1.0-5.el6_4.1.x86_64 1/1
Installed:
tigervnc-server.x86_64 0:1.1.0-5.el6_4.1
Complete!

②安裝完 tigervnc-server 伺服器端程式以後我們需要對其進行配置,配置檔案是 /etc/sysconfig/vncservers

[root@xiaoluo ~]# cat /etc/sysconfig/vncservers
# The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the lines below to start a VNC server on display :2
# as my 'myusername' (adjust this to your own). You will also
# need to set a VNC password; run 'man vncpasswd' to see how
# to do that.
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted! For a secure way of using VNC, see this URL:
# http://kbase.redhat.com/faq/docs/DOC-7028
# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.
# Use "-localhost" to prevent remote VNC clients connecting except when
# doing so through a secure tunnel. See the "-via" option in the
# `man vncviewer' manual page.
# VNCSERVERS="2:myusername"
# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"

我們看到,這個配置檔案預設是沒有任何配置資訊的,是以我們如果需要使用VNC服務,就要修改其配置資訊:

[root@xiaoluo ~]# vi /etc/sysconfig/vncservers
# The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the lines below to start a VNC server on display :2
# as my 'myusername' (adjust this to your own). You will also
# need to set a VNC password; run 'man vncpasswd' to see how
# to do that.
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted! For a secure way of using VNC, see this URL:
# http://kbase.redhat.com/faq/docs/DOC-7028
# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.
# Use "-localhost" to prevent remote VNC clients connecting except when
# doing so through a secure tunnel. See the "-via" option in the
# `man vncviewer' manual page.
# VNCSERVERS="2:myusername"
# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"
VNCSERVERS="1:xiaoluo" // 在配置檔案後面加上這樣一條配置,VNCSERVERS="1:xiaoluo" ,後面引号裡面的内容代表的就是我要為哪個使用者開啟服務,1其實就相當于端口号,比如說我要為第一個使用者 xiaoluo 開啟一個VNC服務,端口号就是1 ,如果還需要為其他使用者添加VNC服務,則繼續在後面添加,例如 VNCSERVERS="1:xiaoluo 2:root"這樣我們就有兩個 VNC 服務了,一個是xiaoluo使用者登入的,另一個是 root 使用者登入的

③配置好後,VNC還需要有單獨的VNC密碼才行,是以我們要對每個啟用VNC服務的使用者建立單獨的VNC密碼,通過 vncpasswd 指令(【注意:】必須要切換到該使用者才行,否則VNC服務啟動不起來):
[root@xiaoluo ~]# su - xiaoluo
[xiaoluo@xiaoluo ~]$ vncpasswd
Password:
Verify:
④為使用者設定好單獨的VNC密碼後,我們這個時候啟動 vncserver 這個服務

[root@xiaoluo ~]# service vncserver start
Starting VNC server: 1:xiaoluo xauth: (stdin):1: bad display name "xiaoluo:1" in "add" command
New 'xiaoluo:1 (xiaoluo)' desktop is xiaoluo:1
Creating default startup script /home/xiaoluo/.vnc/xstartup
Starting applications specified in /home/xiaoluo/.vnc/xstartup
Log file is /home/xiaoluo/.vnc/xiaoluo:1.log
[ OK ]

⑤我們通常需要将iptables關閉或者将其裡面的規則清空,或者在iptables裡面加上一條規則,否則不能通過vnc用戶端來遠端登入vnc服務端
[root@xiaoluo ~]# iptables -F // 清空我們的iptables
這個時候我們的VNC伺服器端就配置好了,接下來我們就可以通過安裝VNC用戶端來遠端登入了,對于VNC用戶端程式,其在Linux、Mac、Windows等作業系統平台上都有用戶端程式,我這裡下載下傳的是 windows 的vnc用戶端來遠端登入我們的CentOS伺服器主機,下載下傳位址如下:VNC用戶端下載下傳位址
下載下傳完以後我們點選安裝,安裝過程中提示要我們進行注冊,我們去其官網注冊以後,然後将注冊碼填上去就行了,然後啟動我們的VNC用戶端程式,界面如下:
在VNC Server這裡輸入我們要遠端登陸的主機IP,【注意:】(這裡要寫上IP以及端口号,還記得我們剛才在VNC伺服器端配置的VNC主配置檔案嗎?沒錯,我們為每一個需要開啟VNC的服務都自己定義了一個端口号,比如說剛才1端口号就是以 xiaoluo 使用者登入),然後點選Connect
這裡會提示我們需要連接配接到 172.25.215.40:1 這台主機上,我們點選Continue即可:
這個時候提示我要我輸入端口号為1這個使用者的密碼,注意這個密碼是我們上面建立的個人使用者的 VNC 密碼,輸入完點選OK
這個時候我們發現我們已經以GUI的方式遠端登入到了我們的CentOS主機上了,這裡要求我們輸入 root 使用者的密碼,我們輸入密碼授權即可,然後點選Authenticate(第一次遠端登入會提示讓我們輸入root密碼進行授權,以後再登陸時就不需要輸入root密碼了)