ssh(secure shell)是一种对数据进行加密安全传输的协议。利用ssh工具可以非常方便的登录远程提供有ssh服务的主机,也可以很方便的进行文件传输。利用 ssh tunnel 可以进行端口转发(port forwarding), 它在ssh连接上建立一个加密的通道。创建了ssh tunnel之后,可以突破一些网络的限制访问不能直接访问的资源。
ssh tunnel分为三种,本地(L),远程(R)和动态(D)。下面以一些简单的实例进行说明。假设本地的IP为l1.l2.l3.l4,远程有一台ssh主机的ip为r1.r2.r3.r4。
本地端口映射(L)可能的用途:本地的机器不能访问一个网站比如www.twitter.com,但是远程的机器可以访问。你可以从本地机器连接到远程的这台机器。现在希望在本地可以访问www.twitter.com。
在远程主机上(或者登录过去)执行命令
ssh -NfL r1.r2.r3.r4:8086:www.twitter.com:80 r1.r2.r3.r4
将twitter.com的web服务端口80映射到远程这台机器上。
然后在本地机器访问
http://r1.r2.r3.r4:8086
就能实现对twitter.com的访问。
如果在远程主机上执行的是如下命令
ssh -NfL 8086:www.twitter.com:80 r1.r2.r3.r4
则不能在本地访问远程主机的8086端口。这时只能在远程主机上访问http://localhost:8086。没有实际意义。
远程端口映射(R)可能的用途:你回到了家或者在外要ssh连接学校或者公司的ssh主机,但是由于网关等原因不允许你这样做。不过你可以实现从学校或公司到处在外网上的家里或者其它一台服务器的连接。
在学校或者公司的本地主机上执行
ssh -NfR 8086:localhost:22 r1.r2.r3.r4
将本地的ssh服务端口映射到远程机器的8086端口。
回家了或者在外时先登录到远程的那台机器上,用命令
ssh -p 8086 localhost
即可实现对公司或者学校内网机器的ssh连接。
动态端口映射(D)可能的用途:因为防火墙等因素本地机器不能访问某些资源,但是远程ssh主机可以访问。你可以从本地ssh到远程那台主机。这时你希望用远程主机做代理以方便本地的网络访问,因为最先介绍的本地端口映射只能对指明的个别网站进行访问。
在本地执行命令
ssh -NfD 8086 r1.r2.r3.r4
这样就建立了一台Socket代理机器,接着在浏览器上设置Socket代理:地址是localhost,端口是8086。从此以后,你的访问都是加密的了,而且走的是远程主机,IP变为了远程主机的IP,一些不能直接访问的资源通过这个代理可以访问。
这种代理称为ssh tunnel proxy。为了更方便的使用ssh tunnel proxy,需要让ssh登录免密码,ssh自动登录,浏览器按照规则自动选择代理。这些在以前的文章Linux下简单的ssh代理与穿墙中有详细说明。如果没有可用的ssh帐号,可以在cjb.net申请。
关于端口的一些说明- 1-1023端口只有root才能开启。大于1023的闲置端口可以使用。
- 可以用命令
lsof -i:8086
查看具体端口8086的使用状况。
SFTP(SSH File Transfer Protocol)从字面上看就是基于ssh的ftp文件传输协议。比一般的ftp传输协议安全性更高。因为它基于ssh,所以提供了sftp的服务器都 有ssh服务可用,即使ssh交互界面被禁。用ssh tunnel proxy 进行socket代理时,我们其实根本就不需要交互界面。所以同样可以用sftp服务器实现代理。方法同Linux下简单的ssh代理与穿墙这篇文章中一样,使用ssh无交互登录就行。
一般的C-panel空间都至少有sftp服务。在控制面板里找到sftp服务的端口就是ssh服务的端口了。然后就可以实现ssh tunnel proxy了。
相关推荐
完全免费开源,软件直接在google 上即可下载,当 Mobaxterm 的开源版本不满足需求的时候,可以使用该软件作为替代。并且该软件很小,也才只有7M左右。
怎样用putty设置SSH tunnel 凡是不晓得SSH为何物的朋友可以略过,也可以google SSH开始了解它。这儿不重复了。
this is a free tunnel software, very portable, fast and eazy to use, please search the web for how to install, configure it.
'port' => env('SSH_TUNNEL_PORT'), 'username' => env('SSH_TUNNEL_USERNAME'), 'key' => env('SSH_TUNNEL_KEY_PATH'), // SSH密钥路径 'passphrase' => env('SSH_TUNNEL_PASSPHRASE'), // 如果需要,密钥的...
It is a software implementation of a router doing IP port forwarding. On the Host part, you have to declare the ports you want to be opened on the Android and the tunnel will transfer communications...
SSH Tunnel(SSH隧道)是一种安全的网络技术,用于在不安全的网络环境中提供加密的数据传输。在本场景中,我们探讨如何使用SSH Tunnel连接到MySQL服务器,尤其在只能通过内网地址访问数据库的情况下。 首先,我们...
SSH隧道作为Kubernetes服务 创建一个Kubernetes服务/部署/ ConfigMap,以将SSH隧道作为... 下一步,您的Kubernetes集群应该有一个侦听端口3306的主机ssh-tunnel-service-mysql.svc.cluster.local 。 执照 麻省理工学院
$ docker run -d -p 8080:8080 --name="tunnel" youssefkababe/ssh-tunnel 然后将您的浏览器或系统配置为使用您服务器的 IP 地址在端口 8080 上连接到您的 Socks 代理。 您可以像这样停止和启动隧道: $ docker ...
SSH的的Port Forward,中文可以称为端口转发,是SSH的一项非常重要的功能。它可以建立一条安全的SSH通道,并把任意的TCP连接放到这条通道中。
从"django-ssh-tunnel-database-connector-0.3.5"这个名称推测,这个Python库可能是为Django设计的一个数据库连接器,它允许Django应用通过SSH隧道来安全地连接到远程数据库。这样的工具对于那些因网络限制或安全...
用于管理SSH隧道的GUI
使用此文件配置ssh代理,配置git通过proxy访问github
### JMeter通过SSH连接远程数据库解决方案 #### 项目背景与需求分析 在当前项目中,存在三台机器:远程数据库服务器、跳板机以及客户端。其中远程数据库服务器的IP地址为192.168.125.130,跳板机的IP地址为192.168...
SSH终端,文件传输和隧道工具。 重点是在隧道内部运行隧道。 那必须跳过几台机器。 请参阅Wiki页面以获取文档。 https://sourceforge.net/p/doffensshtunnel/wiki/Home/
使用Qt 4管理SSH隧道的GUI。
RSTunnel(可靠的SSH隧道)使您可以在安全且加密的隧道中在两个网络之间的数据之间建立隧道。 它使用SSH连接两台计算机。 这将为您设置一个隧道,并确保其持续运行。
Python编写实现SSH的反proxy Tunnel 具体描述可以看我的博客
分为本地端口转发(Local Port Forwarding)和远程端口转发(Remote Port Forwarding)。 五、SSH会话保持 通过`screen`或`tmux`工具,可以在SSH会话中创建多窗口的终端,即使断开连接,工作会话也会被保持,重新...