考虑到在程序中使用ssh认证连接MongoDB数据库的问题,还折腾了《Java使用SSH连接MongoDB》、《C#使用SSH认证连接MongoDB》、《go中使用SSH认证连接MongoDB》。后面发现,在linux中ssh -L
命令的可以直接完成ssh认证并将远程端口映射成本地端口。然后再然程序连接本地对应的端口就可以了。
ssh -CfNgL bind_port:host:hostport user@ip -o TCPKeepAlive=yes
解析:
- -C 压缩传输数据
- -f 建立SSH连接后放置后台,静默模式
- -N 不要执行远程命令。 这对于仅转发端口很有用(仅限协议版本2)
- -g 允许远程主机连接本地端口转发
- -L 指定本地(客户端)主机上的给定端口要转发到远程端的给定主机和端口。
- bind_port: 本地监听端口
- host:hostport: 远程映射地址和端口
- user@ip: ssh服务器ip和登录用户
- -o TCPKeepAlive=yes:tcp连接保持
例如:
ssh -CfNgL 3717:127.0.0.1:27017 192.168.0.105 -o TCPKeepAlive=yes
# 使用可以查看ssh进程
ps -ef | grep ssh
root 27059 1 0 20:10 ? 00:00:00 ssh -CfNgL 3717:127.0.0.1:27017 192.168.0.105 -o TCPKeepAlive=yes
然后,用mongodb连接 127.0.0.1:3717就可以了