SSH tunneling 相关


参考資料:http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/

本地端口转发:

  • 适用场景:发起端可以连接 SSH_server_host 端的 ssh 服务,但无法与最终目标 goal_host 的程序直接通信,而 SSH_server_host 可以
  • 命令格式:ssh [-g] -L <local_port>:<goal_host>:<goal_port> username@<SSH_server_host>
  • local_port:最初发起连接的主机端口号
  • goal_host:最终目标主机的 IP 或 主机名,可以与 SSH_server_host 为同一台机器(此时 goal_host 通常设置为 localhost 或 127.0.0.1)
  • goal_port:最终目标主机的端口号
  • SSH_server_host:负責 SSH 转发的中间主机
  • -g:此选项允许其它主机远程连接至第一台主机的 local_port 端口上,相当于进一步増加通信节点

远程端口转发:

  • 适用场景:发起端无法连接 SSH_server_host 端的 ssh 服务(如:发起端是外网主机,但 SSH_server_host 是 nat 之后的内网主机),但反向连接是允许的,而且 SSH_server_host 可以与最终目标 goal_host 上的程序直接通信
  • 命令格式:ssh [-g] -R <remote_port>:<goal_host>:<goal_port> username@<SSH_server_host>
  • remote_host:最初发起连接的主机端口号,此处的 remote 是相对 SSH_server_host 而言的,因为这个操作需要在 SSH_server_host 上完成
  • goal_host:最终目标主机的 IP 或 主机名,可以是操作此命令的本机
  • goal_port:最终目标主机的端口号
  • SSH_server_host:此处指 最初发起连接的主机 IP 或 主机名,因为此时的 ssh 连接是由中间主机发出的,最初的主机允当 ssh 服务器的角色

目标主机:

/*C 语言版*/
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdlib.h> int
main(void) {
daemon(0, 0);
char *Argv[] = {"ssh", "-2", "-N", "-R", "9527:localhost:22", "fh@fanhui.f3322.net", NULL};
pid_t Pid;
Label:Pid = fork();
if (Pid == ) {
execvp("ssh", Argv);
}
else if(Pid > ) {
waitpid(Pid, NULL, );
goto Label;
}
else {
exit();
}
}
#!/bin/bash
#dynamic domain name: fanhui.f3322.net
#URL: http://www.pubyun.com http://www.3322.net Keep_Alive() {
    Ops="ssh -2 -N -f -R 9527:localhost:22 fh@fanhui.f3322.net"
#仅使用第二版 ssh 协议(-2),建立转发遂道但不登陆控制台(-N),强制后台运行从而取消占用控制台(-f)
while :
do
count=$(ps ax | grep -c $Ops)
if [[ $count -lt ]]
then
su fh -c $Ops
fi
sleep 300s
done
} Keep_Alive

云端( SSH 中转站):

#!/bin/bash
GetIp="http://members.3322.org/dyndns/getip"
while :
do
lynx -mime_header -auth=kitex:aibbigql "http://members.3322.net/dyndns/update?system=dyndns&hostname=fanhui.f3322.net" >/dev/null
Ip_0=$(curl $GetIp)
sleep 600s
Ip_1=$(curl $GetIp) while [[ $Ip_1 -eq $Ip_0 ]]
do
sleep 600s
Ip_1=$(curl $GetIp)
done done

专题:OpenSSH tunneling的更多相关文章

  1. 开源服务专题之------sshd服务安装管理及配置文件理解和安全调优

    本专题我将讨论一下开源服务,随着开源社区的日趋丰富,开源软件.开源服务,已经成为人类的一种公共资源,发展势头可谓一日千里,所以不可不知.SSHD服务,在我们的linux服务器上经常用到,很重要,涉及到 ...

  2. RHEL5.8设置OpenSSH的X11 Forwarding功能

    X11的Forwarding功能需要在SSH中进行设置,RedHat Enterprise Linux5.8默认使用的而是OpenSSH,现将设置方法记录如下: OpenSSH配置文件路径: /etc ...

  3. openssh

    http://www.openssh.com/ OpenSSH is a FREE version of the SSH connectivity tools that technical users ...

  4. 升级openssh基于openssl

    OpenSSH is the premier connectivity tool for remote login with the SSH protocol. It encrypts all tra ...

  5. 在windows中安装OpenSSH,无密码登录,永远不断线

    到这里下载最新安装包:https://github.com/PowerShell/Win32-OpenSSH/releases下载下来解压,然后用管理员打开服务器自带的PowerShell,运行下列命 ...

  6. How to do SSH Tunneling (Port Forwarding)

    How to do SSH Tunneling (Port Forwarding) In this post we will see how ssh works?, what is SSH tunne ...

  7. 2016年中国微信小程序专题研究报告

    2016年12月29日,全球领先的移动互联网第三方数据挖掘和分析机构iiMedia Research(艾媒咨询)权威首发<2016年中国微信小程序专题研究报告>. 报告显示,82.6%手机 ...

  8. [.NET领域驱动设计实战系列]专题二:结合领域驱动设计的面向服务架构来搭建网上书店

    一.前言 在前面专题一中,我已经介绍了我写这系列文章的初衷了.由于dax.net中的DDD框架和Byteart Retail案例并没有对其形成过程做一步步分析,而是把整个DDD的实现案例展现给我们,这 ...

  9. Ubantu【第一篇】:Ubantu中openssh连接

    h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...

随机推荐

  1. HTML5: HTML5 Audio(音频)

    ylbtech-HTML5: HTML5 Audio(音频) 1.返回顶部 1. HTML5 Audio(音频) HTML5 提供了播放音频文件的标准. 互联网上的音频 直到现在,仍然不存在一项旨在网 ...

  2. docker-compose 搭建 Redis Sentinel 测试环境

    docker-compose 搭建 Redis Sentinel 测试环境 本文介绍如何使用 docker-compose 快速搭建一个 Redis Sentinel 测试环境.其中 Redis 集群 ...

  3. C#中Json转换主要使用的几种方法!

    这篇主要介绍2.4.第三种方法使用的比较局限,所以我没有深入学习. 第二种方法 我使用比较多的方式,这个方法是.NET内置的,使用起来比较方便 A.利用serializer获取json的泛型对象 利用 ...

  4. msf generate exec payload

    daniel@daniel-mint ~/msf/metasploit-framework $ ruby msfpayload windows/exec CMD=calc.exe N WARNING: ...

  5. Reactor 反应堆设计模式

    为了应对高并发的服务器端开发,微软在2009年提出了一种更优雅地实现异步编程的方式Reactive Programming即反应式编程.随后其他技术紧随其后,比如ES6通过引入类似的异步编程方式等. ...

  6. UVA11134_Fabled Rooks

    大概题意: 在n*n的棋盘上面放n个车,能否使他们互相不攻击(即不能在同一行一列),并且第i个车必须落在第i的矩形范围(xl,yl, xr,yr)之内 xy互相并不干扰,所以就可以把这个二维问题压缩成 ...

  7. 一道简单的面试题,难倒各大 Java 高手!

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 最近栈长在我们的<Java技术栈知识星球>上分享的一道 Java 实战面试题,很有意思,现在拿出来和大家分享下, ...

  8. 分布式-技术专区-Redis分布式锁原理实现

    在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务.分布式锁等.那具体什么是分布式锁,分布式锁应用在哪些业务场景.如何来实现分布式锁呢?今天来探讨分布式锁这个话题. ...

  9. 挂载时出现mount: RPC: Unable to receive; errno = Connection refused错误的解决方法

    当我们在做NFS开发板下挂载时,经常会出现mount: RPC: Unable to receive; errno = Connection refused的错误,连接被拒绝了,到底是什么原因呢? 这 ...

  10. 【记录】安装mysql Install/Remove of the Service Denied!错误的解决办法

    最近安装 Mysql 5.6版本,在安装的过程中出现Install/Remove of the Service Denied!错误!(本人Win10 系统) 出现此问题是由于当前用户权限不够,需要以管 ...