golang 打隧道和端口转发
`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 打隧道和端口转发的更多相关文章
- SSH隧道:端口转发功能详解
SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 1.1 ssh安全隧道(一):本地端口转发 如下图,假如host3和host ...
- ssh隧道实现端口转发
ssh隧道实现端口转发 本地转发 # 本地转发 ssh -g -f -N -L : root@ # -L 本地端口转发,转发172.16.1.1主机可以访问的资源,这里为转发172.16.1.2的80 ...
- 使用 SSH 隧道实现端口转发、SOCKS 代理
SSH隧道 本地端口转发 本地客户端通过 local_port 连接到 MobaXterm: MobaXterm 绕过防火墙,使用 user 用户连接到 ssh_server_ip:ssh_serve ...
- SSH隧道技术----端口转发,socket代理
原文的原始出处不详,本文也是在复制引用了某篇转载,并做了必要的整理与编辑. 本文的受众 如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写 ...
- 流量操控之SSH隧道与端口转发
目 录 第1章 概述... 3 1.1. 实现命令... 3 1.2. SSH隧道类型... 3 第2章 SSH隧道... ...
- [Linux] SSH隧道本地端口转发访问远程服务中的数据库
当我的本地没有安装任何数据库服务的时候,可以直接通过我本地的端口访问远程机器上的数据库服务,实现这样的效果就可以使用本地转发功能 实际测试本地端口转发,把本地的9006端口转发给远程服务器的115.1 ...
- ssh隧道(端口转发)
本地转发: ssh -Nf -L [bind_address:]port:host:hostport sshServer -Nf 后台运行 -L 本地转发 [bind_address] 绑定本地地址, ...
- 使用SSH端口做端口转发以及反向隧道
目录 SSH做本地端口转发 SSH做反向隧道(远程端口转发) 用autossh建立稳定隧道 SSH开启端口转发需要修改 /etc/ssh/sshd_config配置文件,将 GatewayPorts修 ...
- SSH的端口转发:本地转发Local Forward和远程转发Remote Forward
关于使用ssh portforwarding来进行FQ的操作,网络上已经有很多很好的文章,我在这里只是画两个图解释一下. 首先要记住一件事情就是: SSH 端口转发自然需要 SSH 连接,而 SSH ...
- SSH的端口转发
这里是一篇很好的介绍SSH PortForwarding的文章http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/ 可以将远端服务器一 ...
随机推荐
- [转帖]TiDB 查询优化及调优系列(三)慢查询诊断监控及排查
https://zhuanlan.zhihu.com/p/509984029 本章节介绍如何利用 TiDB 提供的系统监控诊断工具,对运行负载中的查询进行排查和诊断.除了 上一章节介绍的通过 EX ...
- [转帖]【OS】OSWbb(OSWatcher Black Box)的简介和使用
http://blog.itpub.net/26736162/viewspace-2142613/ OSWatcher Black Box, 简称OSW,是提供的一个小但是非常有用的工具,它通过调用O ...
- [转帖] Linux命令拾遗-使用blktrace分析io情况
https://www.cnblogs.com/codelogs/p/16060775.html 原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 一般来说,想检 ...
- [转帖]Linux实用技巧——find查找指定时间内修改过的文件或目录
https://cloud.tencent.com/developer/article/1694949 解决方案 例:查找出五分钟内修改过的文件 [root@mobius ~]$ find ./* - ...
- Redis labs 的安装
Install and setup This guide shows how to install Redis Enterprise Software, which includes several ...
- Grafana监控java应用以及vCenter的方法
Grafana监控java应用以及vCenter的方法 背景 最开始弄过vCenter的监控. 但是发现很多地方已经不合适了. 今天看了下jmx监控 java的应用. 顺便监控了下vCenter. 这 ...
- 【遇到一个怪异的问题】使用embed来加载模版,只要写在init()函数中就会导致HTTP服务出错
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 经过反复测试,只要换一个写法就能开启/重现这个怪异的问题. ...
- 【译】PEP-3129 类装饰器
PEP原文 : https://www.python.org/dev/peps/pep-3129 PEP标题: Class Decorators PEP作者: Collin Winter 创建日期: ...
- hadoop实践02---eclipse操作hdfs的api上传文件
1.eclipse中编写代码后双击main方法--->Run as ---> java application ,然后指定的文件 就会提交到hdfs中. 2.查看文件:http://192 ...
- 驱动开发:DKOM 实现进程隐藏
DKOM 就是直接内核对象操作技术,我们所有的操作都会被系统记录在内存中,而驱动进程隐藏的做旧就是操作进程的EPROCESS结构与线程的ETHREAD结构.链表,要实现进程的隐藏我们只需要将某个进程中 ...