<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 11.6 SSH 服務器的進階應用 事實上 ssh 真的很好用!你甚至不需要啟動甚么 xdmcp, vnc, xrdp 等等服務,使用 ssh 的加密通道就能夠在客戶端啟動圖形接口! 此外,我們知道很多服務都是沒有加密的,那么能不能將這些服務透過 ssh 通道來加密呢?嘿嘿!當然是可以! 在這個章節當中,我們就來談談一些 ssh 的進階應用吧! * * * ### 11.6.1 啟動 ssh 在非正規埠口 (非 port 22) 從前面的章節里面我們就曾經提過, sshd 這個服務其實并不是很安全,所以很多 ISP 在入口處就已經將 port 22 關閉了!為什么要這么作呢?這是因為很多網站管理員并沒有定期的進行軟件 update ,而且為了方便,又很開心的將 port 22 對全世界開放。由于很多 cracker 會使用掃描程序亂掃整個 Internet 的埠口漏洞,這個 port 22 就是一個很常被掃描的端口啦!為了杜絕這個問題,所以 ISP 先幫你把關,先將 port 22 關閉!這也是為了整個區網好! 只是,像鳥哥這種沒有 ssh 就快要活不下去的人,關閉了 port 22 那鳥哥的頭都痛了!沒有辦法工作啊! 那怎辦?沒關系,其實我們可以將 ssh 開放在非正規的埠口。如此一來, cracker 不會掃描到該端口,而你的 ISP 又沒有對該埠口進行限制,那你就能夠使用 ssh 啰!很棒吧!那就來試看看。我們底下將 ssh 開放在 port 22 及 port 23 試看看 (請注意, port 23 不能夠有被使用喔!)。 * 設定 ssh 在 port 22 及 23 兩個埠口的設定方式 ``` [root@www ~]# vim /etc/ssh/sshd_config Port 22 Port 23 &lt;==注意喔!要有兩個 Port 的設定才行! [root@www ~]# /etc/init.d/sshd restart ``` 但是這一版的 CentOS 卻將 SSH 規范 port 僅能啟動于 22 而已,所以此時會出現一個 SELinux 的錯誤!那怎辦?沒關系, 根據 setroubleshoot 的提示,我們必須要自行定義一個 SELinux 的規則放行模塊才行!有沒有很難呢?其實還算簡單! 整體流程是這樣的: ``` # 1\. 于 /var/log/audit/audit.log 找出與 ssh 有關的 AVC 信息,并轉為本地模塊 [root@www ~]# cat /var/log/audit/audit.log &#124; grep AVC &#124; grep ssh &#124; \ &gt; audit2allow -m sshlocal &gt; sshlocal.te &lt;==擴展名要是 .te 才行 [root@www ~]# grep sshd_t /var/log/audit/audit.log &#124; \ &gt; audit2allow -M sshlocal &lt;==sshlocal 就是剛剛建立的 .te 檔名 ******************** IMPORTANT *********************** To make this policy package active, execute: semodule -i sshlocal.pp &lt;==這個指令會編譯出這個重要的 .pp 模塊! # 2\. 將這個模塊加載系統的 SELinux 管理當中! [root@www ~]# semodule -i sshlocal.pp # 3\. 再重新啟動 sshd 并且觀察埠口吧! [root@www ~]# /etc/init.d/sshd restart [root@www ~]# netstat -tlunp &#124; grep ssh tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7322/sshd tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 7322/sshd tcp 0 0 :::22 :::* LISTEN 7322/sshd tcp 0 0 :::23 :::* LISTEN 7322/sshd ``` 有沒有很簡單!這樣你就能夠使用 port 22 或 port 23 聯機到你的 sshd 服務喔! * 非正規埠口的聯機方式 由于預設的 ssh, scp, sftp 都是連接到 port 22 的,那么如何使用這些指令聯機到 port 23 呢? 我們使用 ssh 當練習好了: ``` [root@www ~]# ssh -p 23 root@localhost root@localhost's password: Last login: Tue Jul 26 14:07:41 2011 from 192.168.1.101 [root@www ~]# netstat -tnp &#124; grep 23 tcp 0 0 ::1:23 ::1:56645 ESTABLISHED 7327/2 tcp 0 0 ::1:56645 ::1:23 ESTABLISHED 7326/ssh # 因為網絡是雙向的,因此自己連自己 (localhost),就會抓到兩只聯機! ``` 這樣,你就能夠避過一些 ISP 或者是 cracker 的掃描了!注意一下,不要將 port 開放在某些既知的埠口上, 例如你開放在 port 80 的話,那你就沒有辦法啟動正常的 WWW 服務啦!注意注意! * * * ### 11.6.2 以 rsync 進行同步鏡像備份 我們曾在基礎篇第三版第二十五章里頭談到 [Linux 的備份策略](http://linux.vbird.org/linux_basic/0580backup.php), 該篇曾介紹常用的備份指令,包括 tar, dd, cp 等等,不過當時并未介紹網絡,所以有個很棒的網絡工具沒有介紹, 那就是這個地方要談到的 rsync 啦!這個 rsync 可以作為一個相當棒的異地備援系統的備份指令喔! 因為 rsync 可以達到類似『鏡相 (mirror) 』的功能呢! rsync 最早是想要取代 rcp 這個指令的,因為 rsync 不但傳輸的速度快,而且他在傳輸時, 可以比對本地端與遠程主機欲復制的檔案內容,而僅復制兩端有差異的檔案而已,所以傳輸的時間就相對的降低很多! 此外, rsync 的傳輸方式至少可以透過三種方式來運作: * 在本機上直接運作,用法就與 cp 幾乎一模一樣,例如: rsync -av /etc /tmp (將 /etc/ 的數據備份到 /tmp/etc 內) * 透過 rsh 或 ssh 的信道在 server / client 之間進行數據傳輸,例如: rsync -av -e ssh user@rsh.server:/etc /tmp (將 rsh.server 的 /etc 備份到本地主機的 /tmp 內) * 直接透過 rsync 提供的服務 (daemon) 來傳輸,此時 rsync 主機需要啟動 873 port: 1\. 你必須要在 server 端啟動 rsync , 看 /etc/xinetd.d/rsync 即可; 2\. 你必須編輯 /etc/rsyncd.conf 配置文件; 3\. 你必須設定好 client 端聯機的密碼數據; 4\. 在 client 端可以利用:rsync -av user@hostname::/dir/path /local/path 其實三種傳輸模式差異在于有沒有冒號 (:) 而已,本地端傳輸不需要冒號,透過 ssh 或 rsh 時,就得要利用一個冒號 (:), 如果是透過 rsync daemon 的話,就得要兩個冒號 (::) ,應該不難理解啦!因為本地端處理很簡單, 而我們的系統本來就有提供 ssh 的服務,所以,底下鳥哥將直接介紹利用 rsync 透過 ssh 來備份的動作喔。 不過,在此之前咱們先來看看 rsync 的語法吧! ``` [root@www ~]# rsync [-avrlptgoD] [-e ssh] [user@host:/dir] [/local/path] 選項與參數: -v :觀察模式,可以列出更多的信息,包括鏡像時的檔案檔名等; -q :與 -v 相反,安靜模式,略過正常信息,僅顯示錯誤訊息; -r :遞歸復制!可以針對『目錄』來處理!很重要! -u :僅更新 (update),若目標檔案較新,則保留新檔案不會覆蓋; -l :復制鏈接文件的屬性,而非鏈接的目標源文件內容; -p :復制時,連同屬性 (permission) 也保存不變! -g :保存源文件的擁有群組; -o :保存源文件的擁有人; -D :保存源文件的裝置屬性 (device) -t :保存源文件的時間參數; -I :忽略更新時間 (mtime) 的屬性,檔案比對上會比較快速; -z :在數據傳輸時,加上壓縮的參數! -e :使用的信道協議,例如使用 ssh 通道,則 -e ssh -a :相當于 -rlptgoD ,所以這個 -a 是最常用的參數了! 更多說明請參考 man rsync 的解說! # 1\. 將 /etc 的數據備份到 /tmp 底下: [root@www ~]# rsync -av /etc /tmp ....(前面省略).... sent 21979554 bytes received 25934 bytes 4000997.82 bytes/sec total size is 21877999 speedup is 0.99 [root@www ~]# ll -d /tmp/etc /etc drwxr-xr-x. 106 root root 12288 Jul 26 16:10 /etc drwxr-xr-x. 106 root root 12288 Jul 26 16:10 /tmp/etc &lt;==瞧!兩個目錄一樣! # 第一次運作時會花比較久的時間,因為首次建立嘛!如果再次備份呢? [root@www ~]# rsync -av /etc /tmp sent 55716 bytes received 240 bytes 111912.00 bytes/sec total size is 21877999 speedup is 390.99 # 比較一下兩次 rsync 的傳輸與接受數據量,你就會發現立刻就跑完了! # 傳輸的數據也很少!因為再次比對,僅有差異的檔案會被復制。 # 2\. 利用 student 的身份登入 clientlinux.centos.vbird 將家目錄復制到本機 /tmp [root@www ~]# rsync -av -e ssh student@192.168.100.10:~ /tmp student@192.168.100.10's password: &lt;==輸入對方主機的 student 密碼 receiving file list ... done student/ student/.bash_logout ....(中間省略).... sent 110 bytes received 697 bytes 124.15 bytes/sec total size is 333 speedup is 0.41 [root@www ~]# ll -d /tmp/student drwx------. 4 student student 4096 Jul 26 16:52 /tmp/student # 瞧!這樣就做好備份啦!很簡單吧! ``` 你可以利用上面的范例二來做為備份 script 的參考!不過要注意的是,因為 rsync 是透過 ssh 來傳輸數據的,所以你可以針對 student 這個家伙制作出免用密碼登入的 ssh 密鑰! 如此一來往后異地備援系統就能夠自動的以 crontab 來進行備份了!簡單到爆! 免密碼的 ssh 賬號我們在上頭已經講過了,撰寫 shell script 的能力也是必須要有的!利用 rsync 來進行你的備份工作吧! ^_^!至于更多的 rsync 用法可以參考本章后面所列出的參考網站([注10](#ps10))喔! 例題:在 clientlinux.centos.vbird (192.168.100.10) 上面,使用 vbirdtsai 的身份建立一只腳本,這只腳本可以在每天的 2:00am 主動的以 rsync 配合 ssh 取得 www.centos.vbird (192.168.100.254) 的 /etc, /root, /home 三個目錄的鏡像到 clientlinux.centos.vbird 的 /backups/ 底下。答:由于必須要透過 ssh 通道,且必須要使用 crontab 例行工作排程,因此肯定要使用密鑰系統的免密碼賬號。我們在 11.2.6 小節已經談過相關作法, vbirdtsai 已經有了公鑰與私鑰檔案,因此不要再使用 ssh-keygen 了,直接將公鑰檔案復制到 www.centos.vbird 的 /root/.ssh/ 底下即可。 實際作法可以是這樣的: ``` # 1\. 在 clientlinux.centos.vbird 將公鑰檔復制給 www.centos.vbird 的 root [vbirdtsia@clientlinux ~]$ scp ~/.ssh/id_rsa.pub root@192.168.100.254:~ # 2\. 在 www.centos.vbird 上面用 root 建置好 authorized_keys [root@www ~]# ls -ld id_rsa.pub .ssh -rw-r--r--. 1 root root 416 Jul 26 16:59 id_rsa.pub &lt;==有公鑰檔 drwx------. 2 root root 4096 Jul 25 11:44 .ssh &lt;==有 ssh 的相關目錄 [root@www ~]# cat id_rsa.pub &gt;&gt; ~/.ssh/authorized_keys [root@www ~]# chmod 644 ~/.ssh/authorized_keys # 3\. 在 clientlinux.centos.vbird 上面撰寫 script 并測試執行: [vbirdtsai@clientlinux ~]$ mkdir ~/bin ; vim ~/bin/backup_www.sh #!/bin/bash localdir=/backups remotedir="/etc /root /home" remoteip="192.168.100.254" [ -d ${localdir} ] &#124;&#124; mkdir ${localdir} for dir in ${remotedir} do rsync -av -e ssh root@${remoteip}:${dir} ${localdir} done [vbirdtsai@clientlinux ~]$ chmod 755 ~/bin/backup_www.sh [vbirdtsai@clientlinux ~]$ ~/bin/backup_www.sh # 上面在測試啦!第一次測試可能會失敗,因為鳥哥忘記 /backups 需要 root # 的權限才能夠建立。所以,請您再以 root 的身份去 mkdir 及 setfacl 吧! # 4\. 建立 crontab 工作 [vbirdtsai@clientlinux ~]$ crontab -e 0 2 * * * /home/vbirdtsai/bin/backup_www.sh ``` * * * ### 11.6.3 透過 ssh 通道加密原本無加密的服務 現在我們知道 ssh 這個通道可以加密,而且,我們更知道 rsync 默認已經可以透過 ssh 通道來進行加密以進行鏡像傳輸。 既然如此,那么其他的服務能不能透過這個 ssh 進行數據加密來傳送信息呢?當然可以!很棒呢這個功能! 要介紹實做之前,我們先用圖示來談一下作法。 假設服務器上面有啟動了 VNC 服務在 port 5901 ,客戶端則使用 vncviewer 要聯機到服務器上的 port 5901 就是了。 那現在我們在客戶端計算機上面啟動一個 5911 的埠口,然后再透過本地端的 ssh 聯機到服務器的 sshd 去,而服務器的 sshd 再去連接服務器的 VNC port 5901 。整個聯機的圖示如下所示: ![](https://box.kancloud.cn/2016-05-13_5735da6f74317.gif) 圖 11.6-1、透過本地端的 ssh 加密聯機到遠程的服務器示意圖 假設你已經透過上述各個小節建立好服務器 (www.centos.vbird) 上面的 VNC port 5901 ,而客戶端則沒有啟動任何的 VNC 埠口。 那么你該如何透過 ssh 來進行加密呢?很簡單,你可以在客戶端計算機 (clientlinux.centos.vbird) 執行底下的指令: ``` [root@clientlinux ~]# ssh -L 本地埠口:127.0.0.1:遠程端口 [-N] 遠程主機 選項與參數: -N :僅啟動聯機通道,不登入遠程 sshd 服務器 本地埠口:就是開啟 127.0.0.1 上面一個監聽的埠口 遠程埠口:指定聯機到后面遠程主機的 sshd 后,sshd 該連到哪個埠口進行傳輸 # 1\. 在客戶端啟動所需要的端口進行的指令 [root@clientlinux ~]# ssh -L 5911:127.0.0.1:5901 -N 192.168.100.254 root@192.168.100.254's password: &lt;==登入遠程僅是開啟一個監聽埠口,所以停止不能動作 # 2\. 在客戶端在另一個終端機測試看看,這個動作不需要作,只是查閱而已 [root@clientlinux ~]# netstat -tnlp&#124; grep ssh tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1330/sshd tcp 0 0 127.0.0.1:5911 0.0.0.0:* LISTEN 3347/ssh tcp 0 0 :::22 :::* LISTEN 1330/sshd [root@clientlinux ~]# netstat -tnap&#124; grep ssh tcp 0 0 192.168.100.10:55490 192.168.100.254:22 ESTABLISHED 3347/ssh # 在客戶端啟動 5911 的埠口是 ssh 啟動的,同一個 PID 也聯機到遠程喔! ``` 接下來你就可以在客戶端 (192.168.100.10, clientlinux.centos.vbird) 使用『 vncviewer localhost:5911 』來聯機, 但是該聯機卻會連到 www.centos.vbird (192.168.100.254) 那部主機的 port 5901 喔!不相信嗎? 當你達成 VNC 聯機后,到 www.centos.vbird 那部主機上面瞧瞧就知道了: ``` # 3\. 在服務器端測試看看,這個動作不需要作,只是查閱而已 [root@www ~]# netstat -tnp &#124; grep ssh tcp 0 0 127.0.0.1:59442 127.0.0.1:5901 ESTABLISHED 7623/sshd: root tcp 0 0 192.168.100.254:22 192.168.100.10:55490 ESTABLISHED 7623/sshd: root # 明顯的看到 port 22 的程序同時聯機到 port 5901 喔! ``` 那如何取消這個聯機呢?先關閉 VNC 之后,然后再將 clientlinux.centos.vbird 的第一個動作 (ssh -L ...) 按下 [ctrl]-c 就中斷這個加密通道啰!這樣會使用了嗎?你可以將這個動作用在任何服務上喔! * * * ### 11.6.4 以 ssh 信道配合 X server 傳遞圖形接口 從前一個小節我們知道 ssh 可以進行程序的加密傳遞,亦即 ssh 通道啦!那么可不可以用在 X 上面呢? 意思是說,那我能不能不要啟動甚么很復雜的接口,就是在原有的接口底下使用 ssh 信道,將我所需要的服務器上面的圖形接口傳過來就好了? 是可以的喔!鳥哥用一個 Windows 上面的 Xming X server 作范例好了。整個動作是這樣的: * 先在 Windows 上面啟動 XLaunch,并設定好聯機到 www.centos.vbird 的相關信息; * 啟動 Xming 程序,會取得一個 xterm 程序,該程序是 www.centos.vbird 的程序; * 開始在 xterm 上面執行 X 軟件,就會在 Windows 桌面上面顯示啰! 那我們就開始來處理一下 Xming 這個程序吧!啟動 XLaunch 之后出現下圖模樣: ![](https://box.kancloud.cn/2016-05-13_5735da6f86351.gif) 圖 11.6-2、啟動 XLaunch 程序-選擇顯示模式 記得上圖中要選擇 Multiple windows 會比較漂亮喔!然后按下『下一步』會出現下圖: ![](https://box.kancloud.cn/2016-05-13_5735da6f99dd1.gif) 圖 11.6-3、設定 XLaunch 程序-選擇聯機方式 我們要啟動一只程序,并且是開放在 ssh/putty 之類的軟件幫忙進行 ssh 信道的建立喔!然后下一步吧。 ![](https://box.kancloud.cn/2016-05-13_5735da6fc789e.gif) 圖 11.6-4、設定 XLaunch 程序-設定遠程聯機的相關參數 Xming 會主動的啟動一個 putty 的程序幫你連進 sshd 服務器,所以這里得要幫忙設定好賬號密碼的相關信息。 鳥哥這里假設你的 sshd 尚未取消 root 登入,因此這里使用 root 的權限喔! ![](https://box.kancloud.cn/2016-05-13_5735da70016f2.gif) 圖 11.6-5、設定 XLaunch 程序-是否支持復制貼上功能 使用默認值吧!直接下一步。 ![](https://box.kancloud.cn/2016-05-13_5735da70149a8.gif) 圖 11.6-6、設定 XLaunch 程序-完成設定 很簡單!這樣就完成設定了!請按下完成,你就會看到 Windows 的桌面竟然出現如下的圖示了! ![](https://box.kancloud.cn/2016-05-13_5735da7024f81.gif) 圖 11.6-7、Windows 桌面出現的 X client 程序 上面這只程序就是 xterm 這個 X 的終端機程序。你可以在上面輸入指令,該指令會傳送到 Linux server , 然后再將你要執行的圖形數據透過 ssh 信道傳送到目前的 Windows 上面的 Xming ,你的 Linux 完全不用啟動 VNC, X, xrdp 等服務!只要有 sshd 就搞定了!就是這么簡單!例如鳥哥輸入幾個游戲程序, 你的 Windows 窗口 (看任務欄就知道了) 就會出現這樣的情況: **Tips:** 事實上,我們的 basic server 安裝方式并沒有幫你安裝 xterm 喔!所以,你得要自己安裝 xterm 才行! yum install xterm 就安裝好啦!然后上面的動作再重來一次,就可以成功啰!而底下的圖標里面的相關軟件, 也是需要你自己安裝的呦! ^_^ ![](https://box.kancloud.cn/2016-05-13_5735736501917.gif) ![](https://box.kancloud.cn/2016-05-13_5735da706dfb9.gif) 圖 11.6-8、Windows 桌面出現的 X client 程序 * * *
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看