2011年5月27日

深入淺出OpenSSH於日常工作的應用(一) 安裝與使用ssh

近來常看到Ubuntu Linux被拿來和Windows比較,而評比的方式通常是拿「桌面應用」,比如軟體的種類數量、視窗特效等。每次看到這樣的報導,就覺得莫名的興奮,因為Linux除了在伺服器應用有絕對的優勢,居然也讓一般使用者願意思考Windows和Linux哪個好,我想這部分應該感謝Ubuntu團隊的努力,讓Linux從安裝到上手都相當容易。

其實哪一種作業系統比較好?主觀的意見都只能當作參考,因為每一種受歡迎、擁有愛好者的作業系統,肯定是在某些方面具有優勢。以筆者來說,同時間就有多部機器分別運行Windows、Linux、Mac OS X,若是要玩3D Game、看P2P網路電視、接USB DAC聽音樂,肯定是先打開Windows的機器再說;若是要架設Server、開發Web-based應用程式,自從2001年我的Windows 2000 Server接二連三遭到入侵、開始改用RedHat Linux 7.1架站,就愛死這個堅不可摧的系統;去年入手人生中的第一台蘋果電腦(MacBook Pro),又發現Mac OS X這個簡單、華麗的系統讓人愛不釋手。

因此我不再思考哪一種作業系統比較好,開始嘗試讓不同作業系統能夠一起工作,各取所需、各取所長。

這篇文章想說明以Linux作為Server的架構,而Windows或Mac OS X則扮演Client的角色。

如果要在遠端遙控一台電腦,習慣使用Windows的使用者,第一個想到的應該是遠端桌面連線(Windows內建)、VNC或TeamViewer。這些都是很棒的遠端桌面軟體,但共通的缺點就是太依賴圖形化介面,對一般使用者來說,在區域網路使用沒甚麼問題,若是遠端操作一些簡單的任務,速度慢一點也不是大問題。

但如果你很不幸地跟我們一樣,經常需要設定和維護伺服器,或是在遠端的工作站開發軟體(大多是Web-based),就要認真考慮一下,學習Linux的基本指令、改用以文字終端機為基礎的遠端連線方式。

※ 如果你是Linux新手、想學好系統操作基礎功夫,強烈推薦《鳥哥的Linux私房菜》教學文章

早期的Linux大多採用telnet作為遠端連線方式,如果你沒用過telnet沒關係,因為在台灣普及率很高的BBS就是屬於一種telnet架構的服務。由於telnet在傳輸過程中都是未加密的明碼,相當容易造成資料在傳輸過程中被攔截,駭客就可以從中獲得帳號密碼,造成Linux系統也遭到入侵。為了提高安全性,telnet通常需要搭配防火牆限制連線來源、只允許部分非root權限的user登入,但這只能治標不能治本。

所以近來Linux系統預設的遠端連線伺服器,就不再選擇telnet,而採用ssh取而代之。SSH是Secure SHell protocol的縮寫,它在資料傳輸過程中,資料封包會經過加密,即使資料遭到攔截,也非常不容易破解還原,因此安全性大幅提高了。

但ssh並不是只為在安全考量上取代telnet,其他一些Linux網路遠端指令如finger、R Shell(包含rcp、rlogin、rsh 等)、talk、ftp等,以及圖形化程式的X11 forwarding,都可以透過更安全的ssh取代。

Ubuntu Server版本裝機過程中,可以勾選SSH Server服務,系統安裝程式就會自動安裝、啟用ssh服務。

但如果用Ubuntu Desktop或安裝Ubuntu Server時沒有勾選,也沒關係,在Ubuntu Linux加裝ssh服務相當簡單,只需要一行指令:
sudo apt-get install openssh-server

一行、只要一行,就裝好ssh了!完成後ssh服務會自動啟用。

如果要確認ssh服務是否有在運作,可以輸入:
service ssh status

如果ssh服務已經在運作,會看到如下訊息(****是數字,代表PID)。
ssh start/running, process ****

否則,出現以下訊息,表示ssh還未啟動。
ssh stop/waiting

自行啟動ssh服務的指令為:
sudo service ssh start

停用ssh服務的指令為:
sudo service ssh stop

當然也可以重新啟動,但不太常用到:
sudo service ssh restart

從遠端連線到ssh服務,Linux和Mac OS X系統通常都內建ssh指令。(yourname:你的帳號;remotehost:伺服器的IP或HOSTNAME)
ssh yourname@remotehost

Windows系統需要加裝ssh連線軟體,筆者最推薦的軟體是pietty,它是由台灣人(piaip)改良PuTTY,對中文支援更完善的版本。
http://ntu.csie.org/~piaip/pietty/


一般情況下,ssh服務預設使用的port號碼為22,但有些講求更高度安全性的伺服器,會將port更改為其他號碼,讓駭客使用的掃描工具不會輕易找到ssh服務。雖然ssh連線有加密,但使用root帳號直接登入還是相當危險的事(可能被鍵盤側錄等),伺服器管理者可以修改設定防止一時疏忽造成伺服器安全危害。

Ubuntu的ssh服務設定檔路徑是:
/etc/ssh/sshd_config

以下示範將port號碼改為11122,並禁止root帳號直接登入。
Port 11122
PermitRootLogin no

更改port號碼後,ssh連線指令也必須指定號碼。
ssh -p 11122 yourname@remotehost

有些ssh服務在登入時需要等待很久,這跟網路環境的配置有關,但我們也可以調整sshd_config,減少登入等待時間。
GSSAPIAuthentication no
UseDNS no

延伸閱讀:

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!