SSH

Posted by Adam on August 24, 2022
### X11 共用剪貼簿 在 SSH 連線中,可以透過 ssh 指令的 -X 或 -Y 選項啟用 X11 forwarding 功能,使得遠端主機上執行的 X11 程式可以直接在本機上顯示。這樣一來,就可以在本機與遠端主機之間共用剪貼簿。 在本機上開啟 X11 forwarding 功能:在連線時加上 -X 或 -Y 選項,例如: ```bash ssh -X user@remotehost ``` 在遠端主機上: /etc/ssh/sshd_config ``` X11Forwarding yes ``` ### SSH tunnel SSH tunnel 可以用來加密和保護敏感數據的傳輸,也可以幫助您訪問遠程服務器或主機。以下是一個示例,演示如何使用 SSH tunnel 來訪問遠程服務器。 假設您想通過 SSH tunnel 訪問遠程服務器的 HTTP 服務。您可以使用以下命令在本地端口上設置一個 SSH tunnel: ``` ssh -L 8080:remote_server_ip:80 user@remote_server_ip ``` 這可以理解為將本地端口 8080 與遠程服務器 IP 的端口 80 進行映射。現在,您可以在瀏覽器中通過訪問 `http://localhost:8080` 來訪問遠程 HTTP 服務器。所有數據將通過加密的 SSH 通道傳輸。 這個例子中,我們使用 `-L` 選項指定本地端口與遠程端口的映射。您也可以使用 `-R` 選項來建立遠程到本地的映射。此外,您還可以通過使用 `-D` 選項來設置動態端口轉發,從而加密所有訪問Internet的流量。 請注意,為了使用 SSH tunnel,您需要在本地和遠程服務器上都擁有 SSH 訪問權限。該方法可用於加密任何類型的數據流量,包括 HTTP,FTP,MySQL 等。 ## SSH 掛載 想在本地端直接掛載遠端伺服器的目錄,最常用的指令是 **`sshfs`**。它是基於 SSH 協定開發的工具,能讓你像操作本地硬碟一樣操作遠端檔案。 ### 1. 安裝指令 在使用之前,你需要先安裝這個工具(以常見系統為例): * **Ubuntu/Debian**: `sudo apt install sshfs` * **CentOS/RHEL**: `sudo yum install fuse-sshfs` * **macOS**: `brew install sshfs` (需先安裝 macFUSE) --- ### 2. 掛載基本指令 ```bash sshfs [使用者名稱]@[遠端IP]:[遠端路徑] [本地掛載點] ``` **範例:** 假設你要把遠端伺服器 `192.168.1.10` 的 `/var/www` 目錄掛載到本地的 `~/remote_web`: ```bash # 1. 先建立本地目錄 mkdir ~/remote_web # 2. 執行掛載 sshfs root@192.168.1.10:/var/www ~/remote_web ``` --- ### 3. 常用參數優化 在開發環境中,建議加上一些參數讓操作更流暢: * **`-o allow_other`**: 允許本地其他使用者存取該掛載點。 * **`-o cache=yes`**: 開啟快取,增加讀取速度(對 Java 大型專案很有感)。 * **`-o reconnect`**: 斷線時自動嘗試重新連線。 **進階範例:** ```bash sshfs -o allow_other,reconnect,cache=yes adam@192.168.1.10:/home/adam/project ~/mnt/project ``` --- ### 4. 如何解除掛載 (Unmount) 當你工作結束,不需要掛載時,請使用: ```bash # Linux fusermount -u ~/remote_web # macOS umount ~/remote_web ```