### 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
```