接前文

http://www.cnblogs.com/piperck/p/6188984.html  使用ssh config配置文件来管理ssh连接

前文说了如何配置自己的ssh config 来方便的管理自己的ssh连接,以及如何使用ssh-add来将自己密钥密码存储起来。接下将讨论一下使用ssh来做转发和跳板的相关实践。

首先还是先说下这么一个情况:

我们的外部防火墙阻止了一些常用端口,现在打开的只有22 80 和443 也就是ssh http以及https服务可用,现在我可以通过和远程主机建立 tunnel 通过命令将本地的某个端口的流量通过tunnel 转发到远程主机的指定端口上。

ssh -L 就是做这个事情的
例如我想将本地的 3306 端口上的流量通过ssh23 端口转发到目标主机的 9999 端口上可以使用

ssh -L 3306:127.0.0.1:9999 target_host

同时这个命令也可以使用ssh config写法如下:

Host tokyo-hot
Host target_host
LocalForward 9906 127.0.0.1:3306
User: piperck

另外一个非常实用的,可以使用ssh来轻松越过墙

使用ssh -D 命令可以直接代理到目标,而且目标将会自动监听和转发。支持 socks4 socks5 代理。ssh 可以在此充当一个 socks5 代理服务器。指定一个端口,然后由这个端口作为 socks 代理服务器进行转发。

ssh -TND 9999 piperck@target_server  即可建立一个简易的sock5代理服务了。 如果你的机器是在墙外面,那么你将可以使用这条 ssh tunnel 翻墙。

流量会由 9999 端口进行代理转发。

我理解的流量走的顺序大概是,应用端口->指定端口代理服务器(9999)->ssh(22)   >>>>>>>>>>>ssh(22)目标主机->代为访问目标地址->原路返回数据。

这样相当于将外部服务器做了一个跳板,从跳板上访问另外的目标地址。 如果你喜欢 甚至可以嵌套ssh命令登陆多台机器 类似:

ssh -A -t target_1 ssh -A -T target_2.....

使用这种链条一路访问下去(这里使用-A参数是因为 目标主机存储的是 本地计算机的公钥 如果不是存的本地公钥而是target_1的公钥可以去掉这个参数)。

另外还有一种方式可以实现这种连续跳转的。

使用 ssh -o  ProxyCommand="ssh -W %h:%p jumphost.example.org" server.example.org

大概解释一下 ProxyCommand的-W参数 可以指定一个hostname:port参数

这里的 jumphost.xx 是跳板机的地址, 后面的server.xx是要去往的目标地址,同样ProxyCommand允许使用config配置文件使得他变得更灵活

例如:

Host lab
HostName xcfapp-crontab
User piperck
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh -W %h:%p jumphost.example.org

这样来实现。

ssh 还有非常多的细节可以去探索,暂时我使用到的就是这些,如果以后有更细的功能使用 可能会追加更多的内容。

Reference:

http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/  Simplify Your Life With an SSH Config File

http://www.cnblogs.com/-chaos/p/3378564.html  ssh -D -L -R 差异

http://www.cnblogs.com/piperck/p/6188984.html  使用ssh config配置文件来管理ssh连接

https://heipei.github.io/2015/02/26/SSH-Agent-Forwarding-considered-harmful/  SSH-Agent-Forwarding-considered-harmful

https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts  Proxies_and_Jump_Hosts

https://dslztx.github.io/blog/2017/05/19/ssh%E5%91%BD%E4%BB%A4%E4%B9%8BProxyCommand%E9%80%89%E9%A1%B9/    ssh命令之ProxyCommand选项

使用ssh tunnel 来做代理或跳板的更多相关文章

  1. windows SSH Tunnel实施日记

    1.准备条件:SSH跳板服务器一个.软件:Putty,CCProxy 2.putty建立SSH Tunnel:先在session那儿把服务器地址填好,到Tunnel界面上,选Dynamics和Auto ...

  2. Navicat 或者Java的JDBC通过SSH Tunnel连接MySQL数据库

    JDBC通过SSH Tunnel连接MySQL数据库 - 明明 - CSDN博客https://blog.csdn.net/a351945755/article/details/21782693 Na ...

  3. [转帖]SSH 的 三种代理功能.

    https://www.zhihu.com/people/skywind3000/activities 之前用过frp 知道 ssh 有一 反向代理的功能 没想到 还有这么多高级功能 收藏一下. ss ...

  4. SSH Tunnel扫盲(ssh port forwarding端口转发)

    SSH的的Port Forward,中文可以称为端口转发,是SSH的一项非常重要的功能.它可以建立一条安全的SSH通道,并把任意的TCP连接放到这条通道中.下面仔细就仔细讨论SSH的这种非常有用的功能 ...

  5. [原创]SSH Tunnel for UDP

    SSH Tunnel for UDP UDP port forwarding is a bit more complicated. We will need to convert the packet ...

  6. 通过ssh tunnel连接内网ECS和RDS

    通过ssh tunnel连接内网ECS和RDS 这里讲了ssh tunnel的原理.很清晰. 此后又给外网访问内网增加了一种思路.感觉特别棒. 拓宽了思路:

  7. 使用fiddler4做代理调试手机页面

    由于一般手机不能改host,手机页面如果涉及到各个域名ip的混合使用,在手机上调试看效果非常麻烦. 使用fiddler4做代理,手机跟电脑连到同一个局域网,手机上网通过电脑做个代理上网,那么一切请求就 ...

  8. 2016-12-14 - SSH Tunnel

    2016-12-14 - SSH Tunnel ssh Network Topo Network Topo A: Internet sshd B: NAT sshd C: NAT B Create S ...

  9. 服务器使用nginx做代理,通过HttpServletRequest获取请求用户真实IP地址

    首先,在nginx配置中添加如下配置 server { listen ; server_name www.wenki.info; #要访问的域名 charset utf8; location / { ...

随机推荐

  1. day15 Python全局变量和局部变量

    在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量. 全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序. 当全局变量与局部变量同名时: 在定义局部变量的子程序内,局部变 ...

  2. oracle 查询 归档日志最大值和平均值

    select max(ss.size_GB), avg(ss.size_GB)  from (select s.*, rownum rn2          from (select a.*      ...

  3. JavaWeb界面在线配置代码生成器

    关于直接main方法运行生成代码可参考我的这篇文章:MP实战系列(六)之代码生成器讲解 在线配置主要参考jeesite和jeecg,gun等开源项目,但是与它们相比又有很多不同? 与jeesite相比 ...

  4. Linux系统学习之网络管理

    网络接口配置 使用ifconfig检查和配置网卡 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ...

  5. Linux 从网卡到TCP IP协议栈数据流跟踪与审计

    前沿 在学代码审计,然后最近做Linux协议栈的审计,发现Linux不愧是一个久经考验的系统,本来以为可以找到个DoS的,结果发现其在TCP/IP协议栈的链路层实现,利用了各种技术,用来提高性能与安全 ...

  6. jmeter(十六)配置元件之计数器

    刚翻看了一下博客的草稿箱,发现很多未完成的草稿,拖了很久,趁着今天较空闲,就补上关于jmeter计数器这篇吧,拖延症,要不得啊... 先说说利用jmeter生成数据的几种方法: 1.CSV Data ...

  7. root密码重置(Centos 7)

    1.系统启动时出现操作系统的选择界面,按e进入grub编辑模式. 2.选择linux16开头这一行在最后加上  \re.break 按ctrl+x 3.进入switch-root:# 输入 mount ...

  8. Android6.0权限大全和权限分类

    本文转载至: https://blog.csdn.net/qq_26440221/article/details/53097868 自从出了Android6.0权限管理之后,再也不能像以前那样粘贴复制 ...

  9. 十行代码--用python写一个USB病毒 (知乎 DeepWeaver)

    昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序.查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索关键词usb autorun)到.但是,如果我想, ...

  10. 关于x210开发板和主机、虚拟机ping通问题

    关于x210开发板和主机.虚拟机ping通问题: 步骤: 1.关闭 Ubuntu.关闭VMware软件: 2.打开 网络连接,设置 以太网 IP地址,并确认使用的网卡 3.以管理员身份打开VMware ...