我会解释情况并在最后询问。
我有一台工作电脑,一台 Mac。在这台 Mac 上,我保存了这个命令:
ssh -n -f -T -N -L {port} {server IP} {email} -i {path to secret RSA key}
(花括号只是为了让你知道那里有什么)
我需要执行该命令来启动 ssh 隧道,并且我需要为 bash 提供密码才能检索秘密 RSA 密钥。
然后我打开 DBeaver 并使用我的凭据连接到 Exasol 数据库并通过输入127.0.0.1
(因此端口默认转发到主 ip)和 bash 命令中给出的相同端口。
以下是给出的所有数据的列表:
- 服务器端口(显然,我的计算机上也有隧道端口)
- 服务器IP
- 电子邮件(我想是 myuser@serverdomain.sthg)
- 包含 RSA 密钥的文件的密钥
127.0.0.1
,作为我用来连接 Exasol 数据库的 IP- 服务器端口,和上面的一样
- 数据库的用户
- 和该用户的数据库密码
我想部署一个定期从此 DWH 检索数据的程序。我有两个想法:
- 用python做所有事情。
现在,我想使用 paramiko、sshtunnel 和 pyexasol(python 库)来编写程序,但在我的一生中,我已经阅读了很多堆栈溢出帖子并尝试了很多 ssh 隧道变量的组合。pyexasol 是一个新的、看似孤立和停滞的项目,这无济于事,所以我不能在那里做 ssh。
- 部署一个运行 bash 的 docker 容器来执行该命令,然后使用 bash 本身或 python 程序连接到数据库并检索数据。
但我对网络架构和 Idk 知之甚少,这甚至是如何工作的。
问题1:
你可以帮帮我吗:
使用 sshtunnel 打开 ssh 隧道的代码
或者知道如何使用 Docker 做到这一点
问题2:
甚至可以部署这个吗?或者 ssh 隧道转发是否需要来自这台特定的计算机才能让服务器接受它?
感谢您阅读所有这些内容!