- 論壇徽章:
- 0
|
學(xué)習(xí)本章的必備技巧:
在這個章節(jié)當(dāng)中,我們會介紹基本的 telnet 與 ssh 這兩個遠(yuǎn)程聯(lián)機的服務(wù)器軟件!聯(lián)機就聯(lián)機嘛!為什么要有兩個遠(yuǎn)程聯(lián)機呢?這是因為 telnet 是較舊,而且是相當(dāng)不安全的聯(lián)機服務(wù)器,所以我們才要介紹 ssh 這一個較新而且較安全的服務(wù)器呀!那么在安裝的過程當(dāng)中,我們會使用到一些設(shè)定文件的修改,以及指令的下達(dá),還有需要認(rèn)識一下什么是 Super daemon ,所以,你最起碼需要知道底下這些知識:
· 認(rèn)識 vi
· 認(rèn)識 BASH Shell
· 認(rèn)識服務(wù)
· 常用的網(wǎng)絡(luò)指令
· 認(rèn)識網(wǎng)絡(luò)安全
· 簡易防火墻架設(shè)
------------------------------------------------------------------------------------------------
遠(yuǎn)程聯(lián)機程序的功能:
好了,在這個章節(jié)當(dāng)中,首先,我們要先來了解一下,什么是『遠(yuǎn)程聯(lián)機服務(wù)器』呀?這個東西的功能為何呀!?我想,您應(yīng)該已經(jīng)聽過,一個良好的網(wǎng)絡(luò)環(huán)境當(dāng)中,一部開放到 Internet 上面的服務(wù)器,基本上,他可以不需要顯示卡、屏幕、鍵盤、鼠標(biāo)等等的配備!只要有基本的主機板、CPU、RAM、硬盤再加上一塊好一點的網(wǎng)絡(luò)卡,并且連上 Internet !哈哈!那么你要操控這部主機的時候,只要透過網(wǎng)絡(luò)聯(lián)機進來,然后進行任何修改即可!嘿!所以啰,這個時候主機自然不需要接口設(shè)備啦!
以 VBird 為例,目前 VBird 管理大約七、八部左右的 Unix-Like 主機,這些主機都不在同一個地方,分布在南臺灣各處!那么當(dāng)有新的套件的漏洞被發(fā)布,或者是需要進行一些額外的設(shè)定的時候, VBird 人一定要到現(xiàn)場嗎?當(dāng)然不需要, VBird 只要透過網(wǎng)絡(luò)聯(lián)機到該主機上面,就可以進行任何工作了!真的就好象在屏幕前面工作一般的輕松愉快!^_^!這就是遠(yuǎn)程聯(lián)機服務(wù)器啦!當(dāng)然還不只這樣的功能!舉個例子來說:當(dāng)您的工作需要使用到 Linux 的強大的編譯功能時,那么您一定需要 Linux 對吧!而且最好是運算速度快一點的主機,這個時候你可以將你研究室最快的那一部主機開放出來,設(shè)定一下遠(yuǎn)程聯(lián)機服務(wù)器,讓你的學(xué)生啦,或者是研究室的同仁啦,可以透過這部機器幫他們進行研究的工作,這個時候,你的主機就可以讓多人進行分享 Linux 運算的功能啦!
在早期的網(wǎng)絡(luò)世界里,由于只有 Unix 機器,而且個人計算機還不流行的時候,想要使用大型主機來進行數(shù)值程序的運算時(在我們工程界,比較常使用 Fortran 這一類的程序語言,至于 C 語言則較少碰~),就需要向?qū)W校單位申請工作站的帳號,并且以遠(yuǎn)程聯(lián)機程序連進主機,以使用 Unix 的資源來進行我們的數(shù)值模式運算!所以啦,那個遠(yuǎn)程聯(lián)機服務(wù)器的設(shè)定,基本上,對于系統(tǒng)管理員是很重要的!尤其對于大型的工作站類型的 Unix-Like 主機,由于很多人都需要使用到他的 CPU 運算核心功能,或者是他的編譯程序( compiler )來進行運算,這時的遠(yuǎn)程聯(lián)機就更形重要啦!
· 服務(wù)器類型( Server )的聯(lián)機程序:
在一般開放網(wǎng)際網(wǎng)絡(luò)服務(wù)的服務(wù)器中,由于開放的服務(wù)可能會有較為重要的信息,而遠(yuǎn)程聯(lián)機程序連進主機之后,可以進行的工作又太多了(幾乎就像在主機前面工作一般!),因此網(wǎng)際網(wǎng)絡(luò)的遠(yuǎn)程聯(lián)機程序通常僅針對少部分系統(tǒng)維護者開放而已!除非必要,否則 Server 類型的主機還真的不建議開放聯(lián)機的服務(wù)ㄋㄟ~
· 工作站類型( Workstation )的聯(lián)機程序:
至于工作站的情況就跟服務(wù)器不太一樣了!工作站常常僅針對內(nèi)部的幾個使用者開放而已,通常是不希望連上 Internet 的啦!而且所謂的工作站自然就是用來做工的!例如 VBird 的其中一部 Linux 就是專門用來進行大型的數(shù)值模式計算仿真之用!這個時候的遠(yuǎn)程聯(lián)機服務(wù)器可能就得要對多人激活了!因為工作站的強大運算功能可以讓很多人一同使用他的計算能力!而且也可以免除每部計算機都得要安裝 compiler 的窘境!要知道,某些工程用的 compiler 是粉貴的~
· 遠(yuǎn)程聯(lián)機服務(wù)器的主要類型:
目前最常見的遠(yuǎn)程聯(lián)機服務(wù)器主要有以明碼傳送資料的 telnet 服務(wù)器,及以加密過的封包進行傳送來聯(lián)機的 ssh 服務(wù)器!雖然 telnet 可以支持的 client 端的軟件比較多,不過由于他是使用明碼來傳送資料,很容易遭到有心人士的擷。∷越鼇砦覀兌己粲醮蠹叶嗍褂 ssh 這一種聯(lián)機方式,而舍棄掉 telnet 這個比較不安全的咚咚啰!底下我們就分別來談一談這兩種聯(lián)機服務(wù)器吧!
------------------------------------------------------------------------------------------------
Telnet 服務(wù)器:
知道 telnet 是什么嗎?咦!不就是連接 BBS 的工具嗎?!嘿嘿!沒錯!他確實也是 BBS 軟件類的掛上的一個服務(wù)器啦!不過這里我們暫不玩弄 BBS !因為 VBird 目前也還沒有打算玩他!呵呵! telnet 可以說是歷史相當(dāng)悠久的遠(yuǎn)程聯(lián)機服務(wù)器哩!而且支持他的軟件也相當(dāng)?shù)亩!例如知名?netterm 就直接支持他啦!聯(lián)機之后的界面也漂亮,在 client 端的中文傳輸與輸入也沒有問題!相當(dāng)?shù)牟诲e用!不過,他最麻煩的地方就是.....比較不安全而已啦~
底下我們談一談怎么激活與使用 telnet 服務(wù)器吧!
· telnet 服務(wù)器:激活與關(guān)閉服務(wù)
還記得『認(rèn)識服務(wù)』那個章節(jié)吧!?還記得 super daemon 呦。繘]錯啦,我們的 telnet 就是掛在底下的一支服務(wù)而已!那個咚咚就是有名的 xinetd 啰!( 注:在某些舊版的套件上面也有使用 inetd 的,激活的方式有點不太一樣,不過差異不大啦!只要懂得基本的常識,那么就不會有問題啰!所以要多瞧一瞧Linux 基礎(chǔ)篇啦! ) 激活的方式就是 (1)將 xinetd 里面關(guān)于 telnet 的項目開啟,然后 (2)重新激活一次 xinetd 就成功啦!那么如何開啟 telnet 的項目呢?很簡單,有兩個方式,
1. 使用 ntsysv :
還記得 ntsysv 這個好用的東西嗎?對了,在 Red Hat 底下有這么一個好用的設(shè)定工具,你可以使用 ntsysv 出現(xiàn)的窗口之中,將 telnet 勾選起來,然后按下 OK 離開即可啰!
2. 使用 vi 修改 /etc/xinetd.d/telnet 這個檔案:
那么如果不是 Red Hat 的 Linux 系統(tǒng)呢?基本上, ntsysv 也只是修改 /etc/xinetd.d 這個目錄下的資料而已,所以我們當(dāng)然可以手動自己修改他啦!
![]()
看到了沒?只要將 disable (取消的意思) 變成 no ,也就是不取消,亦即是開啟啦!
設(shè)定完開啟之后,自然就是要激活啦,剛剛提到 telnet 是掛在 xinetd 底下的,所以自然只要重新激活 xinetd 就能夠?qū)?xinetd 里頭的設(shè)定重新讀進來,所以剛剛設(shè)定激活的 telnet 自然也就可以被激活啦!而激活的方式也有兩種方式,其中 service 僅支持在 Red Hat 底下,所以通常我還是以 /etc/rc.d/init.d 底下的 scripts 為激活的主要方法啦!
![]()
那么要看有沒有激活服務(wù)呢?怎么看?其實也很簡單啦,還記得我們在限制 Linux port 的聯(lián)機那一章嗎?使用 netstat 就可以啦!
![]()
看到了嗎?沒錯,那個 telnet 就是激活的項目啦!( 考一個問題,那個 port 對應(yīng)的服務(wù)名稱在哪一個檔案里面查詢到的呢?在每一個 Linux 系統(tǒng)都有的檔案呦!忘記了呀。靠纯催@里 ,然后用 vi 去看看那一個檔案的內(nèi)容吧! ^_^ )那么要如何關(guān)閉呢?呵呵!那就真的是太簡單啦!就將剛剛的步驟再做一次,而將設(shè)定值轉(zhuǎn)變一下即可!步驟如下啦!
![]()
這樣就關(guān)掉啦!很簡單吧!
· telnet 客戶端:好用的聯(lián)機軟件
剛剛上面提到的都是在服務(wù)器端的設(shè)定而已!那么在客戶端有什么好用的軟件可以連上 Server 的呢?最常見到的應(yīng)該就是 netterm 這個鼎鼎大名的聯(lián)機軟件了吧!我想,只要玩過 BBS 的大概都曉得這個軟件才對!所以這里就不提了!另外,目前幾乎所有的操作系統(tǒng)都提供了 telnet 這個程序,這個程序可以直接輕易的就連上 telnet server 呢!例如您要在 Linux 上面連上自己的 telnet 服務(wù)器,可以這樣做:
![]()
這樣就聯(lián)機進來啦!很簡單吧!那么在 Windows 的環(huán)境底下呢?同樣的,也是可以使用 telnet 的程序聯(lián)機到 Linux 的 telnet server 里面來!沒有問題的啦!可以依序這樣做:
1. 按下 Windows 內(nèi)的 『開始』
2. 選擇 『執(zhí)行』
3. 在出現(xiàn)的窗口中輸入 『telnet your.IP.or.hostname』
這樣就可以進入 Linux 的環(huán)境中了!很方便吧!
· telnet 安全性:iptables, TCP_Wrappers, 純建議,
telnet 這個服務(wù)器方便歸方便,但總是一個不太好的聯(lián)機解決方案,因為畢竟他是一個以『明碼』傳輸?shù)膮f(xié)議,什么是『明碼』呢?簡單的說,當(dāng)你使用 telnet 的時候,你總是會在屏幕上面輸入資料吧?最簡單的例子,就是你總是要登入 telnet 的主機畫面吧!那么你總是需要輸入帳號與密碼吧?當(dāng)主機接受你的資料后才能進行確認(rèn)!這個時候,你的資料就會經(jīng)過 telnet 這個協(xié)議來傳輸?shù)街鳈C上面,這個傳輸時候的資料基本上是沒有加密過的,也就是類似 ASCII 碼的咚咚!如此一來的話,只要有心人士在某個 router 點去監(jiān)聽你的封包,而且將該資料封包捉下來,進行解讀的工作,哈哈!那么你的帳號與密碼就被拿走了!所以下一次,別人就可以利用你的帳號與密碼了~很危險對不對~是很危險!除此之外, telnet 由于太老牌了,很多的駭客程序已經(jīng)都寫了破解的方式,所以激活之后,其實也很危險的啦!因此實在是建議不要啟用 telnet 說!無論如何,有些朋友還是喜歡以 telnet 來聯(lián)機,那么我們就提一些基本的注意事項好了!
o root 不能直接以 telnet 連接上主機:
基本上,既然 telnet 不是很安全,自然預(yù)設(shè)的情況之下就是無法允許 root 以 telnet 登入 Linux 主機的!但是,事實上, telnet 只是利用 PAM 模塊來管制 root 的登入而已,因此,如果你確定你的環(huán)境夠安全(例如你的主機并沒有連上 Internet ),并且想要開放 root 以 telnet 登入 Linux 主機的話,請修改 /etc/pam.d/login 這個檔案的第二行設(shè)定即可:
![]()
如此一來, root 將可以直接進入 Linux 主機了!不過,還是不建議如此做的!
o 加上防火墻 iptables:
針對 telnet 加設(shè)防火墻 iptables 是一個好主意!如果您已經(jīng)參考了 VBird 之前寫的『簡易防火墻架設(shè)』一文,并且使用里面的 scripts 的話,那么不用擔(dān)心 telnet 啦!基本上,他原本就僅對內(nèi)部開放 telnet ,外部是無法連上您的 telnet 的!但是,若是您自己設(shè)定了自己的防火墻機制之后,那么想要針對 192.168.0.0/24 這個網(wǎng)域,及 61.xxx.xxx.xxx 這個 IP 進行 telnet 的開放呢?可以增加這幾行在您的 iptables 規(guī)則之內(nèi)(請注意:防火墻的規(guī)則順序是很重要的!所以再回頭看看 簡易防火墻架設(shè) 一文是有必要的!)
![]()
上面的規(guī)則中,第一、二行是針對來源的 IP 來開放 port 23 亦即是 telnet 的協(xié)議啦!而最后一行則是將其它的所有來源的,想要連上 telnet 的聯(lián)機封包都丟掉的意思!怎么樣!很簡單吧!
o 加上防火墻 /etc/hosts.allow(deny) 機制:
防火墻的機制是越多越好!永遠(yuǎn)也不嫌多的啦!這里也可以使用 TCP_Wrappers 的機制呢!剛剛是開放了 192.168.0.0/24 這個網(wǎng)段,但是如果你只想要其中的 192.168.0.1 ~ 192.168.0.5 進入呢?而其它的 IP 只要一經(jīng)聯(lián)機,就會被記錄該 IP ,以提供 root 查詢呢?可以這樣做:
![]()
更詳細(xì)的 TCP_Wrappers 用法請參考 簡易防火墻架設(shè) 一文啰!
o 建議事項:
說真的, telnet 真的不是很安全的!簡直應(yīng)該說為『危險』等級的服務(wù),所以盡量不要激活他啦:
1. 非必要時,不要激活 telnet ,如果真的需要激活 telnet ,那么也請在激活并且使用完畢之后,立即將他關(guān)掉!
2. 如果確定真的要激活 telnet 時,請確定好限制的聯(lián)機范圍,使用 iptables 來設(shè)定聯(lián)機的限制區(qū)域;
3. 加上 TCP_Wrappers 的輔助,加強防火墻的功能!
4. 隨時注意登錄檔案里面關(guān)于 login 的事項!并且不要讓 root 能以 telnet 登入 Linux 主機!
------------------------------------------------------------------------------------------------
SSH 服務(wù)器:
既然 telnet 不是很安全,那么我又需要以遠(yuǎn)程聯(lián)機服務(wù)來操控我的 Linux 主機,那么應(yīng)該怎么辦呀?最好的方法當(dāng)然就是以較為安全的聯(lián)機機制的方案來解決聯(lián)機的問題啰!那么該如何解決這樣的問題呢?這也不難啦,使用 SSH 即可。那么 SSH 是什么呢?他有什么特異功能?簡單的來說,SSH 是 Secure SHell protocol 的簡寫,他可以經(jīng)由將聯(lián)機的封包加密的技術(shù),來進行資料的傳遞,因此,資料當(dāng)然就比較安全啰!這個 SSH 可以用來取代 Internet 上面較不安全的 finger, R Shell (rcp, rlogin, rsh 等指令), talk 及 telnet 等聯(lián)機模式。底下我們將先簡介一下 SSH 的聯(lián)機模式,來說明為什么 SSH 會比較安全呢!
特別注意:這個 SSH 協(xié)議,在預(yù)設(shè)的狀態(tài)中,本身就提供兩個服務(wù)器功能:
1. 一個就是類似 telnet 的遠(yuǎn)程聯(lián)機使用 shell 的服務(wù)器,亦即是俗稱的 ssh ;
2. 另一個就是類似 FTP 服務(wù)的 sftp-server !提供更安全的 FTP 服務(wù)。
· 聯(lián)機加密技術(shù)簡介:
基本上,加密的技術(shù)通常是藉由所謂的『公鑰與私鑰』亦即『Public and Private keys』來進行加密與解密的動作!如下圖所示,當(dāng) SSH 激活服務(wù)之后,會產(chǎn)生一支公鑰,而身為個人計算機的你,在進行與 server 的聯(lián)機時,可以藉由自己產(chǎn)生的私鑰來提供 server 的聯(lián)機之用,也可以直接藉由 server 提供的私鑰來進行聯(lián)機!這個與進行聯(lián)機時選擇的加密版本有關(guān),這個等一下我們再提!
![]()
在上面的圖標(biāo)中,我們可以知道,當(dāng)數(shù)據(jù)由 Server 端傳送到 Client 端時,這些資料會先經(jīng)過『公鑰, Public Key』來進行加密的行為,所以,在傳輸?shù)倪^程中,這些資料本身是經(jīng)過加密的,因此,即使這些資料在途中被截取時,要破解這些加密的資料,還是得要花費上好長一段時間的。那么等這些經(jīng)過公鑰加密的資料傳送到 Client 端之后,就可以藉由所謂的『私鑰, Private Key』來進行解密的動作。需要注意的是,這些公鑰與私鑰在每一部計算機上面都不一樣,所以,你與 Server 的聯(lián)機對其他人來說,都是很難去破解的呢!那么這些公鑰與私鑰是如何產(chǎn)生的呢?底下我們來談一談目前 SSH 的兩種版本的聯(lián)機模式啰!
o SSH protocol version 1:
每一部主機都可以使用 RSA 加密方式來產(chǎn)生一個 1024-bit 的 RSA Key ,這個 RSA 的加密方式,主要就是用來產(chǎn)生公鑰與私鑰的演算方法!這個 version 1 的整個聯(lián)機的加密步驟可以簡單的這么看:
1. 當(dāng)每次 SSH daemon (sshd) 激活時,就會產(chǎn)生一支 768-bit 的公鑰(或稱為 server key)存放在 Server 中;
2. 若有 client 端的需求傳送來時,那么 Server 就會將這一支公鑰傳給 client ,而 Client 藉由比對本身的 RSA 加密方式來確認(rèn)這一支公鑰;
3. 在 Client 接受這個 768-bit 的 server key 之后,Client 自己也會隨機產(chǎn)生一支 256-bit 的私鑰(host key),并且以加密的方式將 server key 與 host key 整合成一支完整的 Key ,并且將這支 Key 也傳送給 server ;
4. 之后,Server 與 Client 在這次的聯(lián)機當(dāng)中,就以這一支 1024-bit 的 Key 來進行資料的傳遞!
當(dāng)然啦,因為 Client 端每次的 256-bit 的 Key 是隨機取的,所以你這次的聯(lián)機與下次的聯(lián)機的 Key 就會不一樣啦!
o SSH protocol version 2:
與 version 1 不同的是,在 version 2 當(dāng)中將不再產(chǎn)生 server key 了,所以,當(dāng) Client 端聯(lián)機到 Server 端時,兩者將藉由 Diffie-Hellman key 的演算方式來產(chǎn)生一個分享的 Key ,之后兩者將藉由類似 Blowfish 的演算方式進行同步解密的動作!
每一個 sshd 都提供這兩個版本的聯(lián)機,而決定這兩種模式聯(lián)機的,就必需要在 client 端聯(lián)機時選擇聯(lián)機的模式才能確認(rèn)。目前預(yù)設(shè)情況下,會自動使用 version 2 的聯(lián)機模式喔!而由于我們的聯(lián)機資料中,經(jīng)過了這個 Public 與 Private Key 的加密、解密動作,所以在中間的傳送過程中,當(dāng)然就比較安全的多啰!
------------------------------------------------------------------------------------------------
激活 ssh 服務(wù):
事實上,在我們使用的 Linux 系統(tǒng)當(dāng)中,預(yù)設(shè)就已經(jīng)含有 SSH 的所有需要的套件了!這包含了可以產(chǎn)生密碼等協(xié)議的 OpenSSL 套件與 OpenSSH 套件,所以呢,要激活 SSH 真的是太簡單了!就直接給他激活就是了!此外,在目前的 Linux Distributions 當(dāng)中,都是預(yù)設(shè)激活 SSH 的,所以一點都不麻煩,因為不用去設(shè)定,他就已經(jīng)激活了!哇!真是爽快~無論如何,我們還是得說一說這個激活的方式吧!直接激活就是以 SSH daemon ,簡稱為 sshd 來激活的,所以,手動可以這樣激活:
![]()
上面兩種方式都可以直接手動激活 sshd 這個服務(wù)!然后使用 netstat -tl 看看能不能看到 ssh 的服務(wù)在監(jiān)聽呢。咳绻霈F(xiàn)了上面那一行黃色字體,就表示您的 SSH 已經(jīng)正確的激活啰!這真是太簡單了吧!沒錯,但是他就是這么簡單~
那么我要如何在開機的時候就激活這個 sshd 呢?如果是 Red Hat 的系統(tǒng),可以使用 ntsysv 這支程序,而 Mandrake 可以使用 chkconfig 這個程序!至于 OpenLinux 則可以到 /etc/sysconfig/daemons 去看看喔!
這個方式僅適合在已經(jīng)有 OpenSSH 的 Linux Distributions 當(dāng)中,如果以 Red Hat 6.x 為例,他并沒有預(yù)設(shè)使用 SSH 怎么辦?別擔(dān)心,可以參考一下底下這個鳥哥之前寫過的網(wǎng)頁,有詳細(xì)的說明使用 tarball 安裝的步驟呢!
使用 Tarbal 安裝 SSH 以及升級 SSH 可能會遇到的問題說明
需要注意的是, SSH 不但提供了 shell 給我們使用,亦即是 ssh protocol 的主要目的,同時亦提供了一個較為安全的 FTP server ,亦即是 ssh-ftp server 給我們當(dāng)成是 FTP 來使用!所以,這個 sshd 可以同時提供 shell 與 ftp 喔!而且都是架構(gòu)在 port 22 上面的呢!所以,底下我們就來提一提,那么怎么樣由 Client 端連接上 Server 端呢?同時,如何以 FTP 的服務(wù)來連接上 Server 并且使用 FTP 的功能呢?
------------------------------------------------------------------------------------------------
· ssh 客戶端聯(lián)機: ssh, putty
由于 Linux 與 Windows 這兩個客戶端的 Client 聯(lián)機軟件并不一樣,所以我們分為兩個部分來說明:
o Linux 客戶端:
在 Linux 客戶端方面,我們主要以 ssh 進行一般聯(lián)機,而已 sftp 進行 FTP 的使用聯(lián)機!分別簡介如下:
![]()
這里請?zhí)貏e留意的是,如果直接以 ssh hostname 來連接進入 hostname 這個主機時,則進入 hostname 這個主機的『帳號名稱』將會是目前你所在的這個環(huán)境當(dāng)中的使用者帳號!以上面為例,因為我是以 root 的身份在執(zhí)行,所以如果我執(zhí)行了『 ssh host.domain.name 』時,那么對方 host.domain.name 這部主機,就會以 root 的身份來讓我進行密碼確認(rèn)的登入動作!因此,為了避免這樣的麻煩,通常我都是以簡單的 e-mail 的寫法來登入遠(yuǎn)方的主機,例如『ssh user@hostname 』即表示,我是以 user 這個帳號去登入 hostname 這部主機的意思。當(dāng)然,也可以使用 -l username 這樣的形式來書寫!登入對方主機之后,其它的所有執(zhí)行行為都跟在 Linux 主機內(nèi)沒有兩樣~所以,真的是很簡單吧! ^_^ 這樣就可以達(dá)到遠(yuǎn)程控管主機的目的了!此外,在預(yù)設(shè)的情況下, SSH 是『允許你以 root 的身份登入』喔!呵呵!更是爽快啦!此外,請?zhí)貏e留意的是,當(dāng)您要連接到對方的主機時,如果是首次連接,那么 Server 會問你,你的聯(lián)機的 Key 尚未被建立,要不要接受 Server 傳來的 Key ,并建立起聯(lián)機呢?呵呵!這個時候請『務(wù)必要輸入 yes 而不是 y 或 Y』,這樣程序才會接受喔!
那么如何使用 SSH FTP 的功能呢?也是很容易啦!就是使用 sftp 這支程序即可!而登入的方式與 ssh 相同,都是使用 sftp -l username hostname 或者直接以 sftp user@hosname 來書寫!執(zhí)行之后會有底下的模樣:
![]()
進入到 sftp 之后,那就跟在一般 FTP 模式下的操作方法沒有兩樣了!底下我們就來談一談, sftp 這個接口下的使用指令吧!
![]()
![]()
就整體而言, sftp 在 Linux 底下,如果不考慮圖形接口,那么他已經(jīng)可以取代 FTP 了呢!因為所有的功能都已經(jīng)涵蓋啦!因此,在不考慮到圖形接口的 FTP 軟件時,可以直接關(guān)掉 FTP 的服務(wù),而改以 sftp-server 來提供 FTP 的服務(wù)吧! ^_^
o Windows 客戶端:
在 Linux 底下已經(jīng)有 ssh 了,那么如果在 Windows 底下呢?該怎么辦?呵呵!這個可以直接使用 putty 這種類型的聯(lián)機軟件呢,他也是免費的軟件喔!取得的方式可以參考底下的網(wǎng)站:
http://www.chiark.greenend.org.uk/~sgtatham/putty/
好了,那么要取得哪幾個程序呢?其實只要 putty.exe 及 psftp.exe 這兩支程序就夠了!分別用來登錄 shell 及 FTP 的呢!
o putty:
直接在 Windows 底下執(zhí)行,執(zhí)行的圖標(biāo)有點像底下這樣:
![]()
這個時候請注意,由于我們比較喜歡將固定的幾個主機的IP記錄下來,所以在這里我們需要先進行一些基本的設(shè)定才行!在上圖中,我們需要填寫:
(1)HostName(or IP address) 那一項,及
(2)Saved Sessions 取個好記的名字,
(3)并且選擇 SSH 那個選項才行!
以我的區(qū)域內(nèi)網(wǎng)絡(luò)為例,我可以寫成這個模樣:
![]()
請千萬記得,填寫完畢之后,一定要按下右邊的『Save』按鍵,這樣你的設(shè)定才會被記錄下來喔!接著下來,我們要設(shè)定的是每次登入的時候,都會進行記錄的項目,所以,你可以在左邊的畫面上面按下『Logging』然后將右邊的『Always append to the end of it』,這樣才不會每次登入的時候,系統(tǒng)都要問你一次,是否需要記錄!
![]()
接著下來,我們還可以調(diào)整整個 putty 的屏幕大小呢!以下圖為例,我設(shè)定我的登入畫面為 40 行與 100 個字符!這樣的畫面比起傳統(tǒng)的 24 * 80 要大的多,看起來也比較舒服就是了~那么那個 1000 表示我的滾動條有 1000 行的紀(jì)錄,可以方便我往前查詢呢!
![]()
調(diào)整完了屏幕的大小之后,再來這是最重要的:『你要以第幾個 SSH version 進入?!』前面說過,我們預(yù)設(shè)是以 version2 來登入的,所以這里我們可以調(diào)整為 2 那個項目!這樣每次登入都會以 version 2 的模式登入主機了!
![]()
好了,已經(jīng)都設(shè)定完畢了,再來當(dāng)然又是要記錄啰!所以請回到『Session』的設(shè)定里面,再按下一次『Save』,這個時候在中間的大框框就會出現(xiàn)你輸入的記錄名稱,然后,以后要登入 SSH 主機時,就直接給他點兩下 test.linux.org 那個(就是你剛剛自行設(shè)定的紀(jì)錄名稱),就可以進入你所點選的主機啰!
![]()
整個 putty 大致上的流程就是這樣!如此一來,您就可以在 Windows 上面以 SSH 的協(xié)議,登入遠(yuǎn)程的 Linux 主機嚕!粉方便吧! ^_^ !如果還要其它的設(shè)定,那么就直接修改 Saved Sessions 與 HostName 這兩個項目,然后再次給他 Save ,嘿嘿!就又多一個設(shè)定值了!而且還是跟剛剛的設(shè)定值相同!很容易設(shè)定的啦!
o psftp:
這一支程序的重點則是在于以 sftp 聯(lián)機上 Server 。聯(lián)機的方式可以直接點選 psftp 這個檔案,讓他直接激活,則會出現(xiàn)下面的圖樣:
![]()
這個時候可以填入你要連接上去的主機名稱,例如我的區(qū)域內(nèi)網(wǎng)絡(luò) test.linux.org 這個主機:
![]()
呵呵!這樣就登入主機啦!很簡單吧!然后其它的使用方式跟前面提到的 sftp 一樣哩!加油的使用吧!
------------------------------------------------------------------------------------------------
詳細(xì)設(shè)定 sshd 服務(wù)器
基本上,所有的 ssh 相關(guān)設(shè)定都放在 /etc/ssh/sshd_config 里面!不過,每個 Linux distribution 的預(yù)設(shè)設(shè)定都不太相同,所以我們有必要來了解一下整個設(shè)定值的意義為何才好!
![]()
![]()
![]()
![]()
![]()
基本上,在你的系統(tǒng)中,『除非有必要,否則請不要更改 /etc/ssh/sshd_config 這個檔案的設(shè)定值!』因為預(yù)設(shè)的情況下通常都是最嚴(yán)密的 SSH 保護了,因此,可以不需要更動他!上面的說明僅是在讓大家了解每個細(xì)項的一些基本內(nèi)容而已!需要注意的是最后一項,如果您不愿意開放 SFTP 的話,將最后一行批注掉即可!
另外,如果你修改過上面這個檔案(/etc/ssh/sshd_config),那么就必需要重新激活一次 sshd 這個 daemon 才行!亦即是: /etc/rc.d/init.d/sshd restart
------------------------------------------------------------------------------------------------
· 制作不用密碼可立即登入的 ssh 用戶:
咦!既然 SSH 可以使用 Key 來比對資料,并且提供使用者資料的加密功能,那么可不可能利用這個 Key 就提供使用者自己進入主機,而不需要輸入密碼呢?呵呵!好主意!我們可以將 Client 產(chǎn)生的 Key 給他拷貝到 Server 當(dāng)中,所以,以后 Client 登入 Server 時,由于兩者在 SSH 要聯(lián)機的訊號傳遞中,就已經(jīng)比對過 Key 了,因此,可以立即進入數(shù)據(jù)傳輸接口中,而不需要再輸入密碼呢!在實作上的步驟可以是:
1. 首先,先在 Client 上面建立 Public Key 跟 Private Key 這兩把鑰匙,利用的指令為 ssh-keygen 這個命令;
2. 再來,將 Private Key 放在 Client 上面的家目錄,亦即 $HOME/.ssh/ ,并且修改權(quán)限為僅有該 User 可讀的狀態(tài);
3. 最后,將那把 Public Key 放在任何一個你想要用來登入的主機的 Server 端的某 User 的家目錄內(nèi)之 .ssh/ 里面的認(rèn)證檔案即可完成整個程序。
說是好象很困難的樣子,其實步驟真的很簡單,我們依序來進行作業(yè)好了!
假設(shè)前提:
a. Server 部分為 test.linux.org 這部 192.168.0.2 的主機,欲使用的 User 為 test 這個帳號;
b. Client 部分為 test2.linux.org 這部 192.168.0.100 PC 的 test2 這個帳號,他要用來登入
192.168.0.2 這部主機的 test 這個帳號。
也就是說,我在 192.168.0.100 這部機器的身份為 test2 ,但是我想以 test 的身份登入 192.168.0.2 這部主機,并且希望不要使用密碼!這樣可以了解大前提了嗎?好了,我們就一步一步來作吧!
1. 在 Client 端建立 Public 與 Private Key :
建立的方法真的是簡單到不行!直接在 192.168.0.100 這個 Client 上面,以 test2 這個帳號,使用 ssh-keygen 這個指令來進行 Key 的產(chǎn)生即可!不過,需要注意的是, version 1 與 version 2 使用的密碼演算方式不同,此外, version 2 提供兩個密碼演算的方法,我們這里僅針對 version 2 的 RSA 這個演算方法進行說明!
![]()
請注意上面喔,我的身份是 test2 ,所以當(dāng)我執(zhí)行 ssh-keygen 時,才會在我的家目錄底下的 .ssh/ 這個目錄里面產(chǎn)生所需要的兩把 Keys ,分別是私鑰(id_rsa)與公鑰(id_rsa.pub)。另外一個要特別注意的就是那個 id_rsa 的檔案權(quán)限啦!他必須要是 -rw------- 才好!否則內(nèi)容被人家知道了,那么你的 Keys 不就有可能外泄了?所以請?zhí)貏e留意他的權(quán)限喔!那么那個 id_rsa.pub 則是『公鑰!』這個檔案必須要被放置到 Server 端才行!
2. 在 Client 端放置私鑰:
在預(yù)設(shè)的條件中,我們的私鑰必需要放置在家目錄底下的 .ssh 里面,那么如果是 version 2 的 RSA 算法,就需要放置在 $HOME/.ssh/id_rsa 當(dāng)中!咦!剛好使用 ssh-keygen 就是已經(jīng)產(chǎn)生在這個目錄下了,所以自然就不需要去調(diào)整他了!以我的 test2.linux.org 來看,那么我的檔案就會放置在 /home/test2/.ssh/id_rsa 這個檔案就是私鑰啦!
3. 在 Server 端放置可以登入的公鑰:
既然我們要讓 test2 可以以 test 這個帳號登入 test.linux.org 這部主機,那么這部主機自然需要保有 test2 的 public key 啰!對的!所以我們必需要將 Client 端建立的 id_rsa.pub 檔案給他拷貝到 test.linux.org 里頭的 test 這個使用者的家目錄之下!那么如果你還記得上面的 sshd_config 這個檔案的設(shè)定的話,那么應(yīng)該就記得『AuthorizedKeysFile』這個設(shè)定吧!是的!在被登入的主機的某個帳號,他的公鑰放置的文件名稱預(yù)設(shè)就是這個項目所記載的!而他預(yù)設(shè)的檔名就是 authorized_keys 這個文件名稱啦!那么應(yīng)該怎么做呢?
![]()
請注意上面的機器!由于 authorized_keys 可以保存相當(dāng)多的公鑰內(nèi)容,因此,可以使用 >> 的方式來將 Client 端的公鑰新增到該檔案內(nèi)!呵呵!做完這一步一后,未來 test2 就可以直接在 test2.linux.org 以
![]()
這樣就可以不需要輸入密碼啰!但是請注意, test 不能以 test2 登入 test2.linux.org 喔!
很簡單的步驟吧!這樣一來,就可以不需密碼的手續(xù)了!無論如何,你要記得的是, Server 需要有的是 Public Keys ,而 Client 端的則是 Private Keys !則未來,當(dāng)你還想要登入其它的主機時,只要將你的 public key ( 就是 id_rsa.pub 這個檔案 )給他 copy 到其它主機上面去,并且新增到某帳號的 .ssh/authorized_keys 這個檔案中!哈哈!成功!
------------------------------------------------------------------------------------------------
· 安全設(shè)定:
好了,那么關(guān)于安全的設(shè)定方面,有沒有什么值得注意的呢?當(dāng)然是有啦!我們可以先建議幾個項目吧!分別可以由:
o /etc/ssh/sshd_config
o /etc/hosts.allow, /etc/hosts.deny
o iptables
這三方面來著手進行!底下我們就說一說吧!
· /etc/ssh/sshd_config
一般而言,這個檔案的預(yù)設(shè)項目就已經(jīng)很完備了!所以,事實上是不太需要更動他的!但是,如果您有些使用者方面的顧慮,那么可以這樣修正一些問題呢!
o 禁止 root 的登入:任何時候,不許 root 以遠(yuǎn)程聯(lián)機的方式登入,都會是一個好主意!所以這里蠻建議大家直接將 root 的登入權(quán)限拿掉吧!所以,可以修改 /etc/ssh/sshd_config 這個檔案的內(nèi)容為:
![]()
如此一來,以后 root 就不能以 ssh 登入啰!這樣還是比較好的啦! ^_^
o 不許某個群組登入:有些特殊情況中,我們想要讓使用者只能使用 sendmail, pop3, ftp 等,但是不希望他可以遠(yuǎn)程聯(lián)機進來,那么你可以這樣做:
1. 將這些使用者都?xì)w納在某一個特殊群組之下,例如 nossh 這個群組好了;
2. 在 /etc/ssh/sshd_config 當(dāng)中加入這一行:『DenyGroups nossh』
3. 重新激活 sshd : /etc/rc.d/init.d/sshd restart
這樣就OK啦!
o 不許某個使用者登入:跟 DenyGroups 類似,使用 DenyUsers 即可!參考
sshd_config
的設(shè)定喔!
· /etc/hosts.allow 及 /etc/hosts.deny :
這東西也是很簡單的啦!直接參考: 簡易防火墻架設(shè) 一文啰!當(dāng)然,簡單的方法就是:
![]()
· iptables
多幾層保護也很好的!所以也可以使用 iptables 喔!參考:簡易防火墻架設(shè)一文啰!
基本上, SSH 還蠻安全的,只要取消 root 的登入權(quán)限,那么問題應(yīng)該就會比較小一點啦!所以,雖然可以不用設(shè)定 iptables ,但是建議針對幾個網(wǎng)域設(shè)定一下 /etc/hosts.allow 與 /etc/hosts.deny !加油啰!
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/16194/showart_162388.html |
|