package main
import (
"context"
"fmt"
"net"
"os"
"os/signal"
"syscall"
"github.com/armon/go-socks5"
"golang.org/x/crypto/ssh"
)
func main() {
sshAddress := "10.0.0.11:22"
socks5Address := "localhost:1080" // open socks5 connection
sshConf := &ssh.ClientConfig{
User: "root",
Auth: []ssh.AuthMethod{ssh.Password("SSH_PASSWORD_HERE")},
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
}
sshConn, err := ssh.Dial("tcp", sshAddress, sshConf)
if err != nil {
fmt.Println("error tunnel to server: ", err)
return
}
defer sshConn.Close()
fmt.Println("connected to ssh server")
go func() {
conf := &socks5.Config{
Dial: func(ctx context.Context, network, addr string) (net.Conn, error) {
return sshConn.Dial(network, addr)
},
}
serverSocks, err := socks5.New(conf)
if err != nil {
fmt.Println(err)
return
}
if err := serverSocks.ListenAndServe("tcp", socks5Address); err != nil {
fmt.Println("failed to create socks5 server", err)
}
}()
ch := make(chan os.Signal)
signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
<-ch
return
}
golang ssh隧道 socks5服务器
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 转自 https://segmentfault.com/a/1190000010201590 下面笔者将用SS5在...
- 前期准备 购买海外vps,配置1核1G即可,操作系统选择Ubuntu。 海外vps推荐vultr。 通过nodej...
- 之前好像在群里和大家 讨论过 越过公司跳板机 在python程序里直接提取 HDFS 或者hive 数据,但是 大...
- 最近在单位购置了一台小服务器,但是回到家就不能用了,太影响我加班了!用 SSH 反向隧道可以实现穿透内网访问服务器...