<返回更多

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

2023-05-16  今日头条  互联网解决方案服务
加入收藏

在生产环境中,如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

 

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>