一、遠程管理的基本概念
首先我們來初略的講講遠程管理的一些基本概念。對於我們使用的計算機來說,如果是個人計算機,就沒有遠程管理這一概念了,想用的時候開機就能使用,而對於我們的服務器來說,就不同了,對於服務器其一般都是放置在我們的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 root@172.25.215.40 命令來進行登陸,root是我們需要登陸的用戶名,@后面跟的是我們的ip地址
[root@xiaoluo ~]# ssh root@172.25.215.40 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. root@172.25.215.40'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 root@172.25.215.40 命令遠程登錄到我們的主機,我們有時如果登陸遠程主機只是為了執行某條命令,此時我們可以直接在后面跟命令名字即可,例如 ssh root@172.25.215.40 ls,這樣我們就只會登陸遠程主機然后執行完命令就返回了
對於其他一些常用的SSH命令,還有 scp 、rsync等這些命令
scp 命令是用以在兩台計算機之間進行快速的、加密的數據傳輸,命令的語法格式為:
scp 源文件 目標地址
例如我們要將當前目錄下的 xiaoluo.txt 這個文件復制到 172.25.215.40 這台主機的 /root 目錄下,我們可以使用如下命令:
[root@xiaoluo ~]# scp xiaoluo.txt root@172.25.215.40:/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密碼了)
此時我們發現,我們已經通過圖形界面遠程登錄到我們的主機上了,我們可以在里面進行任何權限范圍內的操作了,就跟直接使用服務器一樣
來源:https://www.cnblogs.com/xiaoluo501395377/archive/2013/05/28/3102866.html