如何golang使用ssh隧道连接rabbit-mq?

在生产环境中,如mysql数据库服务、rabbit-mq消息队列服务、redis缓存服务等。为了安全,这些服务的通常端口都是不对外网开放的。

有时候,我们需要本地访问这些服务,要如何设置呢?

一、临时开放端口,限制访问ip。

二、使用vpn环境访问。

三、ssh反向代理,在本地监听端口。

四、通过ssh隧道访问。

五、其他。。

这里介绍golang如何使用ssh隧道连接rabbit-mq

// 日志格式配置
log.SetFlags(log.LstdFlags|log.Lshortfile)
// ssh连接
client,err := ssh.Dial("tcp","localhost:22",&ssh.ClientConfig{
	User: "root",
	HostKeyCallback: ssh.InsecureIgnoreHostKey(),
	Auth: []ssh.AuthMethod{
		ssh.Password("root-password"),
	},
	Timeout: 3*time.Second,
})
if err != nil {
	log.Fatal(err)
}
// rabbit-mq连接
url := fmt.Sprintf("amqp://%s:%s@%s", "User", "Password", "Addr")
dialCfg := amqp.Config{
	Heartbeat: 10 * time.Second,
	Locale: "en_US",
	// dialer 自定义配置
	Dial: func(network, addr string) (net.Conn, error) {
	// 使用ssh隧道
		return client.Dial(network, addr)
	},
}
conn, err := amqp.DialConfig(url, dialCfg)
log.Println(err,conn)

这里使用到了golang.org/x/crypto/ssh和github.com/streadway/amqp

ssh隧道连接rabbit-mq

展开阅读全文

页面更新:2024-05-21

标签:隧道   队列   缓存   端口   消息   格式   环境   数据库   日志

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top