SDB:OpenSSH tunnels

跳转到:导航搜索
Icon-merge.png
更新至版本 13.1
本文需要针对较新版本进行测试。如果您正在使用此指南的较新版本,并且发现指南已更新至此版本,请将版本号添加到知识栏。请参阅版本相关任务:SDB 页面以获取更多信息。

通用

大多数使用 TCP 连接的程序可以通过安全的隧道使用 OpenSSH 传输。这用于在单个 ssh 连接上复用额外的 TCP 连接。它对于隐藏连接和加密未加密的协议以及绕过防火墙非常有用。可以使用诸如 之类的程序有时可以隧道化 UDP 连接。易于隧道化的程序示例包括 X Window System、使用代理的 HTTP 和 。在两台 Unix 计算机之间通常会自动创建 X Window System 隧道,因此可以通过简单地键入其名称来运行远程计算机上的 GUI 程序。

前提条件

您必须拥有正在运行的 SSHD 和 SSH。您还需要熟悉配置它们。如果不是,请参阅 openSSH配置 openSSH


端口转发

隧道应用程序最常见的方法之一是端口转发。例如,您可以转发端口 139 以隧道 SMB 连接,或端口 80 以隧道 Web 服务器。可以转发本地主机端口和远程地址端口。如果希望转发路由器网站,该网站位于 SSHD 服务器网络中,这会很有用。为了允许端口转发,请编辑/etc/ssh/ssh_config使用您喜欢的编辑器,如果尚未设置,请设置

AllowTcpForwarding yes

端口转发的设置方式是在 SSH 配置文件之一或命令行中完成的。在这些示例中,我们将使用个人配置文件 ~/.ssh/config。将选项放在/etc/ssh/sshd_config将以相同的方式工作,但适用于所有用户。

本地转发

在 *NIX 系统上,转发到低于 1024 的端口是一项特权操作,通常只能由 root 执行。作为普通用户,您仍然可以转发较低的端口,但必须在转发端口的主机上将其“绑定”到更高的端口。

本地转发意味着:转发服务器上的端口并将其“绑定”到客户端上的端口。端口默认绑定到“localhost:port”地址。如果指定接口地址(必须是计算机网络接口之一的现有地址),则它将被绑定到该地址,并且可以被允许通过防火墙访问的其他主机访问。这是定义的主机基于端口转发的典型设置。作为普通用户,编辑~/.ssh/config使用您喜欢的编辑器

## These are just settings to define a host. Use "Host *" if you want to configure it for all hosts. You can define as must host as you like.
Host ssh-server
   Hostname 72.91.12.103
   Port 2222
## Here we will define the Local Forwards ##
# This forwards a POP3 server that is active on "ssh-server"
   LocalForward 1110 ssh-server:110
# This forwards a web server (eg your router) which is not active on "ssh-server"
   LocalForward 8080 192.168.1.1:80
# This forwards a squid proxy server that is active on "ssh-server" and binds it to an interface adress.
   LocalForward 192.168.1.103:3128 ssh-server:3128 

远程转发

远程转发意味着:转发客户端上的端口并将其“绑定”到服务器上的端口。端口绑定行为与本地转发相同。如果希望使仅在您的本地网络中可用的服务在您的 SSHD 服务器上可用,此选项将派上用场。除了上面的例子

# This forwards a local NFS server to "ssh-server".
   RemoteForward 1025 localhost:1025
# This forwards a local SSHD server to "ssh-server" and binds it to an interface address on "ssh-server"
   RemoteForward 172.20.20.1:5041 localhost:22

动态转发 / 创建 SOCKS

动态转发使您可以创建“临时”代理服务器。这是为了支持比普通端口转发更灵活的代理。使用此选项,仅指定客户端上的“绑定”地址和端口。所有在此地址上的连接请求都将自动转发到服务器侧的适用地址和端口。如果未指定“绑定”地址,则默认情况下它将“绑定”到 localhost。

以下流行的程序支持 SOCKS 隧道:Chrome、Gnome-shell 和许多其他程序

除了上面的例子

# This establishes a SOCKS server that listens on "localhost:1080".
   DynamicForward 1080
# This establishes a SOCKS server that listens on "192.168.1.103:5555", where your Firewall allows.
   DynamicForward 192.168.1.103:5555
# The command line flag would be:
   $ ssh -D 5555 192.168.1.103

GatewayPorts 选项

为了防止其他人使用您的本地转发端口,端口通常“绑定”到 localhost 地址。TheGatewayPorts选项使您可以更改此设置。将此选项设置为yes将更改默认“绑定”到通配符地址,这意味着所有您配置的地址。(本地和外部接口)。您可以将此行添加到您的配置文件之一以启用它。

GatewayPorts yes

基于 tun 的 VPN

Icon-expand.png
本文是一个存根!
需要扩充本文。欢迎您按照风格指南进行编辑。

从版本 4.3 开始,OpenSSH 实现了 OSI 层 2/3“” -based VPN。这是 OpenSSH 的隧道功能中最灵活的,允许应用程序透明地访问远程网络资源,而无需“socksification”。


参见


外部链接