SSH -w 参数使用指南:配置文件与参数详解
ssh -w要怎么使用ssh config配置文件配置, 以及它有哪些参数
以下是关于如何在 SSH 配置文件中使用 -w
参数(隧道设备转发)的详细说明,包括参数解释和配置示例:
1. ssh -w
参数的作用与语法
- 功能:创建 TUN/TAP 虚拟网络接口,实现网络层(L3)或数据链路层(L2)的隧道。
- 语法:
1
ssh -w <local_tun>:<remote_tun> user@host
<local_tun>
:本地 TUN 设备编号(如0
表示tun0
)。<remote_tun>
:远程 TUN 设备编号(如0
表示tun0
)。- 特殊值
any
:允许系统自动分配设备号(如-w 5:any
)。
2. SSH 配置文件中的 Tunnel
指令
在 ~/.ssh/config
中,使用 Tunnel
参数配置隧道设备:
1 | Host my-tunnel-host |
关键参数说明:
参数 | 作用 |
---|---|
Tunnel |
指定本地和远程的 TUN 设备号,格式为 <local>:<remote> (如 0:0 )。 |
TunnelDevice |
(部分版本支持)显式绑定到具体设备号,与 Tunnel 类似。 |
PermitTunnel |
需在服务端 sshd_config 中设置为 yes ,否则隧道无法建立(见下文)。 |
PermitLocalCommand |
允许在本地执行命令(如自动配置 IP 地址)。 |
3. 服务端配置(必需)
在远程服务器的 /etc/ssh/sshd_config
中启用隧道支持:
1 | PermitTunnel yes # 允许 TUN/TAP 隧道 |
重启 SSH 服务生效:
1 | sudo systemctl restart sshd |
4. 使用步骤示例
(1) 建立 SSH 隧道
1 | ssh -w 0:0 root@remote-server.com |
(2) 配置虚拟接口 IP 地址
- 本地:
1
2sudo ip addr add 10.0.0.1/24 dev tun0
sudo ip link set tun0 up - 远程:
1
2sudo ip addr add 10.0.0.2/24 dev tun0
sudo ip link set tun0 up
(3) 测试连通性
1 | ping 10.0.0.2 # 从本地 ping 远程隧道 IP |
5. 高级用法:自动化配置
在 SSH 配置文件中添加 LocalCommand
,自动完成 IP 分配:
1 | Host my-tunnel-host |
6. 常见问题与注意事项
权限问题:
- 需要
root
权限创建 TUN/TAP 设备,建议以sudo
运行 SSH 命令。 - 如果使用普通用户,需配置
CAP_NET_ADMIN
权限:1
sudo setcap cap_net_admin=ep /usr/bin/ssh
- 需要
操作系统支持:
- Linux:原生支持 TUN/TAP。
- macOS:需安装 TUN/TAP 驱动。
- Windows:需安装 OpenVPN 的
tap-windows
驱动。
协议选择:
- TUN 模式(默认):传输 IP 数据包(L3)。
- TAP 模式:传输以太网帧(L2),需显式指定:
1
ssh -o Tunnel=ethernet -w 0:0 user@host
7. 完整配置示例
1 | # ~/.ssh/config |
总结
-w
参数:用于创建 TUN/TAP 隧道,需在配置文件中使用Tunnel
指令。- 核心步骤:服务端启用
PermitTunnel
,客户端配置隧道设备并分配 IP。 - 适用场景:构建 VPN、跨网络透明代理、支持 UDP 的全协议转发。