摘要
過去曾在〈WinSCP alternative〉與〈在內部網路的Ubuntu機器之間使用NFS存取資料〉提到幾種在Linux機器之間傳輸檔案的方式,但在某些程度上這些方式還是有些不方便,而SSHFS在設定與使用上都相對的較為簡單與方便,安全性也佳,而且也適合Windows機器連線進來使用。以下僅假定在內部網路使用,也只談論Ubuntu MATE 18.04安裝與使用SSHFS連線另一部Ubuntu機器的做法,不會涉及Windows方面的使用,這方面可見後面的參考與連結。
SSHFS[1, 2]的使用情況有點類似Windows上由一部機器提供資料夾分享,讓另一部Windows機器連接網路磁碟機進來取得檔案,不同的是走不一樣但較安全的協定。
為方便說明,以下把要提供資料讓別部機器連線進來的機器稱為A,而連線進來存取資料的機器稱為B,也就是A擔任檔案服務器的角色,而B是A的用戶端機器。
SSHFS透過SSH協定來連線遠端機器,所以A必須先安裝好OpenSSH Server才能讓B以SSH用戶端程式連線進來。
安裝與設置OpenSSH Server
安裝很簡單:
$ sudo apt install openssh-server
如果在內部的網路環境使用,即使不做任何設置(即採用設置值)也可正常使用,這裡純粹為了方便說明就只調整幾項設定。先備份好原有的設置檔,然後以編輯器開啟設置檔:
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
$ sudo chmod a-w /etc/ssh/sshd_config.original
$ sudo vi /etc/ssh/sshd_config
這裡用vi編輯設置檔,讀者可改成慣用的編輯器,修改/新增其中幾項,如:- Port 2022
- PermitRootLogin no
- Allowusers yourname
設置檔詳細說明請見:
$ man sshd_config
修改完存檔,記得讓sshd重新載入新設定值:
$ sudo systemctl reload sshd
以上只是簡單的設置,如果該機器要放在公眾存取網路上,最好做嚴謹的設置。sshfs用戶端程式的安裝與使用
在B機器安裝sshfs:
$ sudo apt install sshfs
sshfs的使用也相當簡單,命令形式像:
sshfs [user@]host:[dir] mountpoint [options]
- 建議以一般使用者(非root)來執行。掛載點mountpoint必須由使用者擁有。
- 若省略user@,就用本機目前用的username,也就是在遠端機器上也有個與本機目前用相同的username。
- 若省略dir,就掛載遠端的家目錄。
- 就如同ssh的使用,在第一次連線時會先收到一個連線加密用的公鑰,輸入yes後才能繼續連線。在必要時會要你輸入(遠端機器的)密碼。
$ mkdir ~/mnt
再來,以2022埠連線掛載遠端機器的家目錄到~/mnt:
$ sshfs 192.168.1.112: ~/mnt -p 2022
2020-10-3補充:與遠端機器第一次連線後,本機中會存放該機器的key在 ~/.ssh/known_hosts 中。如果往後這部遠端機器重裝,它的key會改變,想再與它連線,要先把本機存的key或前述檔案刪掉,否則key不對會被拒絕連線。
成功後,若在Caja(即檔案總管)看~/mnt,其中即遠端機器家目錄裡的東西。或者也可用mount查看掛載的情況。
卸載時請用fusermount,如:
$ fusermount -u ~/mnt
在BSD與macOS則用umount。在Ubuntu上若非得要用umount,要前置sudo。
也可以利用Caja在mnt上的快捷選單,點“卸載”命令,如下圖。如果選單上沒看到,往下捲動滑鼠輪或按鍵盤的向下鍵。
sshfs的圖形前端
如果非得在Linux上用sshfs的圖形前端,請見[3, 4]。自己懶得用,所以沒用過。Windows上的使用
自己沒試過,較少用Windows。在Windows上可用Dokan或WinSSHFS有圖形介面的用戶端程式連上遠端機器,請見[5, 6]。[6]也提及了macOS上的使用。
若想在Windows上安裝OpenSSH Server,請見[7, 8]。
參考與連結
- https://zh.wikipedia.org/wiki/SSHFS
- https://en.wikipedia.org/wiki/SSHFS
- https://www.linuxquestions.org/questions/linux-software-2/sshfs-gui-4175606305/
- http://howto.blbosti.com/2010/09/mount-a-remote-ssh-folder-in-ubuntu-cmd-and-gui/
- https://wsgzao.github.io/post/winsshfs/
- https://blog.gtwang.org/linux/sshfs-ssh-linux-windows-mac-os-x/
- https://winscp.net/eng/docs/guide_windows_openssh_server
- https://docs.microsoft.com/zh-tw/windows-server/administration/openssh/openssh_install_firstuse
沒有留言:
張貼留言