2010年12月3日 星期五

Ubuntu Linux的SSH遠端連線

SSH Server 遠端連線方式

透過 telnet 進行遠端登入是系統管理這最常使用的方式 ,
但是它有安全性上的缺點存在;因此,另一種方法則是透過ssh的方式進行遠端登入。
要進行SSH遠端登入,可以透過 Putty 或 Pietty 等遠端連線軟體連線進行連線。
但是前題是在 Ubuntu Linux Server 上必須支援 SSH Server。
而最方便的是安裝 OpenSSH Server。

裝openssh-server
如果你沒有安裝ubuntu時沒有安裝openssh,請以終端機介面輸入以下的指令來做安裝

sudo apt-get install openssh-server

接下來
輸入以下指令來檢查 ssh-server 是否有執行,
ps aux | grep ssh
啟動 ssh-server 的指令是,
sudo /etc/init.d/ssh start   
或重新啟動的指令是,
sudo /etc/init.d/ssh restart 

遠端 Client 端連線方式
遠端Client是Linux,則質借透過終端機下指令,
sudo ssh localhost -p 22 -l root
如果遠端Client是Windows,那就必須透過應用軟體,如 Putty Pietty

為了安全性考量,建議將預設的port 22改為port 22222
修改完成之後,請存檔並離開
sudo vim /etc/ssh/sshd_config 
再來找到
# What ports, IPs and protocols we listen for (約第4、5行)
Port 22 
可將預設的port改成系統未在使用的port,因為系統預設都會有一些連接port,例如:ftp是port21、web是port80、smtp是port25、ssh是port22、telnet是port23等等,那你要怎麼知道哪些被使用呢?鍵入下列的指令吧。
(port的內容相當多,在一個區段內找一個數字,只要在services當中沒出現的即可)

sudo less /etc/services

例如:22222這個port系統沒有使用,那你就將22改成22222,那這樣在連ssh時就必須將port改成22222,若維持22是連不進去的。
 修拐完成Port後,必須重新啟動OPENSSH Server
sudo /etc/init.d/ssh restart  
其他,


限制IP登入
再來,我們要修改可以登入這台主機的ip,否則任可一個ip都可以利用帳號登入,這是基本的防護。

sudo vim /etc/hosts.allow
在最下方加入
sshd:xxx.xxx.xxx.xxx :allow

xxx就是指你的ip位置,包含你遠端要登入的ip(一般ADSL浮動ip則不適用,此方法只適用固定IP)。

拒絕所有IP登入
當你允許了你指定的IP可以登入,那其他的浮動IP就不讓他們登入了,避免不必要的麻煩和攻擊,

sudo vim /etc/hosts.deny
加入 sshd:all:deny

如此一來,除了你允許的IP之外,其他的浮動IP就連不進來

sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
一樣修改完成後,要重新啟動喔!

本文參考引用部分自:iT邦幫忙首頁D掉不累格