2009年5月6日 星期三

SSH 與 SFTP - Samba 以外的遠端檔案存取方式

剛開始用 Ubuntu 的時侯,若想在不同電腦分享檔案時,第一個想到的就是 Samba,但是最近在 GNOME panel 上的功能表上摸索時,發現到一個 Samba 以外的方法。

從 GNOME panel 的功能表選 位置 > 連接到伺服器...

GNOME panel 功能表 > 連接到伺服器...

接著會彈出一個連接伺服器的 dialog

連接伺服器 dialog 的初始狀態

在服務類型右邊的 combo box 點下去以後,可以看到一個連線方式的列表

連接伺服器 dialog 的服務類型列表

在列表中比較引起我注意的是 SSH,之前常常透過 SSH 連到遠端 Linux server 作 shell 指令操作,但是不知道這裡的 SSH 是做什麼用的,因此好奇地點選了 SSH,結果 dialog 的內容變成

服務類型為 SSH 時的連接伺服器 dialog

填入伺服器的位置 (除了 IP 也可填主機的網域名稱,如: mycomputer.no-ip.net) 及使用者名稱 (192.168.2.134 及 remote-user-name 只是範例資料) 按下連接

服務類型為 SSH 時的連接伺服器 dialog (加上範例資料)

接著它會要求輸入 remote-user-name 的密碼,密碼輸入完後按下連線

輸入密碼 dialog

最後會跳出一個 Nautilus 視窗,裡面顯示的就是 192.168.2.134 主機內的檔案

Nautilus 視窗連到 SFTP 時的樣子

原來 Samba 以外 SSH 也可以用這樣的方式透過 Nautilus 存取遠端的檔案。此外,注意在下圖中的位置列

Nautilus 視窗連到 SFTP 時的樣子 (位置列用紅框框起來以強調)

可以發現其中的位置有這樣的格式

sftp://<使用者名稱>@<主機位址>

和我們平常用 Samba 時在位置列中看到的位置很類似,差別只在於它是以 sftp:// 開頭而不是 smb:// 開頭,SFTP 即 SSH file transfer protocol 的縮寫。因此如果想要透過 SSH 連到遠端主機,其實不必經過連接伺服器的對話方塊及上面的一堆步驟,只要直接在任意一個 Nautilus 視窗的位置列中輸入依照上面格式的位置並套入使用者名稱和主機位址就行了。這種存取方式在遠端伺服器沒設定 Samba 或沒安裝 Samba server 的場合可以派上用場,要注意的是 server 端與 local 端必需分別安裝 SSH server (例如 openssh-server 套件) 與 SSH client (例如 openssh-client 套件,一般 Ubuntu 預設都有裝 SSH client),否則要用 SFTP 存取遠端檔案很可能會失敗。

2 意見:

阿賢Linux戰記 提到...

一般來講裝 samba都是當網路芳鄰,為的是讓M$可以分享到Linux的資源,當然啦當當PDC也行的。

而使用sftp就是SSH的file transfer protocol基本上得先讓M$裝個可以和ssh溝通的軟體。

兩者各有優缺啦,用samba的得先好好的設定一下才能,用 ssh則在M$下先裝裝for SSH的軟體。

在公司架我是用Linux+Samba就ok
在家則是儘開ssh

Justin Lee 提到...

> 用samba的得先好好的設定一下才能用

目前在 Command Line Interface (CLI) 還不太會設 Samba ,只會在 GUI 下設 :p

可惜的是家裡另一台電腦是裝 Ubuntu server 版的,似乎只能從 CLI 設,所以暫時用 SFTP 跳過 Samba 繁複的設定

有空得來好好研究您的大作 :-)