`package main

import (

"golang.org/x/crypto/ssh"

"io"

"log"

"net"

)

// main 万物的起源

func main() {

sshAddr := "000.00.000.00:22" // 服务器的 ip:ssh端口

sshUser := "root" // 用户名,可以新建一个特定用户

sshPasswd := "6666666.66666" // 密码

Remote := "127.0.0.1:3306" // 转发到远程的端口,未开放但是你想访问的端口

Listen := "127.0.0.1:3307" // 需要转发的本地端口,本地访问时使用的端口

serverClient, err := ssh.Dial("tcp", sshAddr, &ssh.ClientConfig{
User: sshUser,
Auth: []ssh.AuthMethod{ssh.Password(sshPasswd)},
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
})
if err != nil {
log.Fatalf("ssh服务器连接异常: %s", err.Error())
}
defer serverClient.Close() // 程序执行完关闭连接,养成好习惯
log.Println("与服务器建立ssh连接成功啦") // 监听本地映射端口 这样访问本地端口的时候我就可以发现啦
listener, err := net.Listen("tcp", Listen)
if err != nil {
log.Fatalf(err.Error())
}
defer listener.Close() // 程序执行完关闭连接,养成好习惯 for {
// 接收本地发送的数据
conn, err := listener.Accept()
if err != nil { // 养成好习惯处理错误
log.Println(err)
return
}
// 开启一个协程去处理这次的消息
go func(conn net.Conn) {
//建立ssh到后端服务的连接
forwardConn, err := serverClient.Dial("tcp", Remote)
if err != nil { // 养成好习惯处理错误
log.Fatalln(err.Error())
}
log.Println("ssh端口映射隧道建立成功")
defer forwardConn.Close() // 用完要关掉
// 转发工作
go io.Copy(forwardConn, conn) // 客户端发送给服务端的数据拷贝给服务端
io.Copy(conn, forwardConn) // 服务端发送给客户端的数据拷贝给客户端
}(conn)
}

}

`

golang 打隧道和端口转发的更多相关文章

  1. SSH隧道:端口转发功能详解

    SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 1.1 ssh安全隧道(一):本地端口转发 如下图,假如host3和host ...

  2. ssh隧道实现端口转发

    ssh隧道实现端口转发 本地转发 # 本地转发 ssh -g -f -N -L : root@ # -L 本地端口转发,转发172.16.1.1主机可以访问的资源,这里为转发172.16.1.2的80 ...

  3. 使用 SSH 隧道实现端口转发、SOCKS 代理

    SSH隧道 本地端口转发 本地客户端通过 local_port 连接到 MobaXterm: MobaXterm 绕过防火墙,使用 user 用户连接到 ssh_server_ip:ssh_serve ...

  4. SSH隧道技术----端口转发,socket代理

    原文的原始出处不详,本文也是在复制引用了某篇转载,并做了必要的整理与编辑. 本文的受众 如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写 ...

  5. 流量操控之SSH隧道与端口转发

    目  录 第1章            概述... 3 1.1.         实现命令... 3 1.2.         SSH隧道类型... 3 第2章            SSH隧道... ...

  6. [Linux] SSH隧道本地端口转发访问远程服务中的数据库

    当我的本地没有安装任何数据库服务的时候,可以直接通过我本地的端口访问远程机器上的数据库服务,实现这样的效果就可以使用本地转发功能 实际测试本地端口转发,把本地的9006端口转发给远程服务器的115.1 ...

  7. ssh隧道(端口转发)

    本地转发: ssh -Nf -L [bind_address:]port:host:hostport sshServer -Nf 后台运行 -L 本地转发 [bind_address] 绑定本地地址, ...

  8. 使用SSH端口做端口转发以及反向隧道

    目录 SSH做本地端口转发 SSH做反向隧道(远程端口转发) 用autossh建立稳定隧道 SSH开启端口转发需要修改 /etc/ssh/sshd_config配置文件,将 GatewayPorts修 ...

  9. SSH的端口转发:本地转发Local Forward和远程转发Remote Forward

    关于使用ssh portforwarding来进行FQ的操作,网络上已经有很多很好的文章,我在这里只是画两个图解释一下. 首先要记住一件事情就是: SSH 端口转发自然需要 SSH 连接,而 SSH ...

  10. SSH的端口转发

    这里是一篇很好的介绍SSH PortForwarding的文章http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/ 可以将远端服务器一 ...

随机推荐

  1. [转帖]实践真知:解决 Jdbc 连接 Oracle 12c 时快时慢的问题

    https://cloud.tencent.com/developer/article/1052506 李真旭@killdb Oracle ACE,云和恩墨技术专家 个人博客:www.killdb.c ...

  2. [转帖]TIKV扩容之刨坑填坑​

    01 背景 某tidb集群收到告警,TIKV 节点磁盘使用率85%以上,联系业务无法快速删除数据,于是想到扩容TIKV 节点,原先TIKV 节点机器都是6TB的硬盘,目前只有3TB的机器可扩,也担心r ...

  3. [转帖]tidb4.0.4使用tiup扩容TiKV 节点

    https://blog.csdn.net/mchdba/article/details/108896766 环境:centos7.tidb4.0.4.tiup-v1.0.8 添加两个tikv节点   ...

  4. [转帖]MioIO读/写性能测试

    https://www.jianshu.com/p/a0a84f91b16f   image.png COSBench是Intel团队基于java开发,是一个测试云对象存储系统的分布式基准测试工具,全 ...

  5. [转帖]新版 Elasticsearch 中的强悍插件 X-pack

    https://zhuanlan.zhihu.com/p/36337697   3 人赞同了该文章 作者:Alan 岂安科技运维工程师努力踏上一条为后人留坑的运维之路.(逃 1 前言 Elk 日志可视 ...

  6. [转帖]Sysbench - 一种系统性能benchmark

    SysBench是一款开源的.跨平台的.模块化的.多线程的性能测试工具,通过高负载地运行在数据库上,可以执行CPU/内存/线程/IO/数据库等方面的性能测试.用于评估操作系统的性能参数. 1 sysb ...

  7. [转帖]记一次vcsa6修复过程

    一. 某天发现一台vmware  vCenter Server Appliance services 6偶尔能登陆了,但极不稳定,连shell都偶尔能进...... 然后利用各种手段想方设法进到she ...

  8. [转帖]Linux中split大文件分割和cat合并文件详解

    https://www.yingsoo.com/news/servers/70195.html 当需要将较大的数据上传到服务器,或从服务器下载较大的日志文件时,往往会因为网络或其它原因而导致传输中断而 ...

  9. Go 跟踪函数调用链,理解代码更直观

    Go 跟踪函数调用链,理解代码更直观 目录 Go 跟踪函数调用链,理解代码更直观 一.引入 二.自动获取所跟踪函数的函数名 三.增加 Goroutine 标识 四.让输出的跟踪信息更具层次感 五.利用 ...

  10. 手撕Vue-实现计算属性

    前言 经过上一篇的学习, 完成了将数据代理到了 Nue 的实例上方,这个我们已经撕完了.接下来要实现的是计算属性,计算属性的实现原理是通过 Object.defineProperty() 来实现的,我 ...