即使阅读了几篇关于ssh隧道的文章,我仍然无法理解这个脚本中CLI ssh命令的哪些参数。基本上,我需要通过ssh隧道连接到某个服务器(我称其为'ssh_tunnel_host:22'),然后使用此隧道连接到db_host。
with SSHTunnelForwarder(
('ssh_tunnel_host', 22),
ssh_username="ssh_username",
ssh_pkey="/somepath/id_rsa",
local_bind_address=('0.0.0.0', 1234),
remote_bind_address=('127.0.0.1', 3306)
) as tunnel:
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('127.0.0.1', 1234)
db_connection = pymysql.connect(host=db_host, port=3306, db='mysql', user='user',
password='password', charset='utf8mb4')
请问:
- local_bind_address是什么 - 是我的本地地址还是ssh_tunnel_host的本地地址?我在哪里可以找到IP和端口号?
- 根据上一个问题 - remote_bind_address是什么 - 是ssh_tunnel_host或db_host的地址?我在哪里可以找到这些IP和端口号?
- 我应该使用client.connect()连接到哪里?本地绑定还是远程绑定?
(我尝试阅读文档但仍然不清楚)
ssh_tunnel_host
看,DB主机不是127.0.0.1:3306
吗?否则它是如何被隧道化的。根据(2),如果DB主机不是隧道主机的本地主机,则需要将其作为远程绑定地址,即remote_bind_address=(db_host, 3306)
。 - dannyremote_bind_address =(db_host,3306)
- Vladimir Kolenov