繁体   English   中英

无法使用 sshtunnel 将 SSH 发送到 Google Cloud Compute Engine

[英]Can't SSH to Google Cloud Compute Engine with sshtunnel

我在 GCP 上准备了两个带有 Compute Engine 的 VM 实例。 ServerA:ServerB 上的数据处理和 SQL(mysql) 读写。 ServerB:SQL 服务器(f1-micro* 这不是 Cloud SQL,而是普通的 VM 实例。)

尝试从 A 到 B 访问 SSH,以便使用以下代码在 ServerB 上读/写 DB。

错误代码

错误:错误 | 问题设置 SSH 转发器启动:无法打开隧道 localhost:3306 <> localhost:3306 可能正在使用或目标无法访问

sshtunnel.HandlerSSHTunnelForwarderError:打开隧道时出错。

#SSH connection
with SSHTunnelForwarder(
    ('PublicIP of ServerA', 22),
    ssh_pkey=SSH_PKEY_PATH,
    ssh_username=SSH_USER,
    remote_bind_address=('localhost', 3306),
    local_bind_address=('localhost', 3306)
) as ssh:
    try:
    #DB connection
            connection = mysql.connector.connect(
                host='localhost',
                port = 3306,
                user=MYSQL_USER,
                passwd=MYSQL_PASS,
                db=MYSQL_DB,
                charset='utf8'
            )
    # print(connection.is_connected())
    # Get Cur
        cur = connection.cursor()
        sql = "use dbname"
        cur.execute(sql)
        
        for i in range(len(sqlList)):
            print("DB Access:" + str(sqlList[i]))
            sql = str(sqlList[i])
        # sql = 'create table test (id int, content varchar(32))'
            cur.execute(sql)
            sqlOUTPUT = cur.fetchall()
    # rows = cur.fetchall()
    # for row in rows:
    #     print(row)
    except mysql.connector.Error as err:
        print("Something went wrong: {}".format(err))
        connection.rollback()
        raise err
    finally:
        #Cur close
        cur.close()
        # Commit
        connection.commit()
        #DB Connection close
        connection.close()
return sqlOUTPUT

但是在“local_bind_address=(localhost, MYSQL_PORT)”之后,在B的shell或者VSCode本地环境中,同样的代码和同样的私钥,还是会报错。

我不明白为什么它使用 shell 和 VSCode 使用相同的代码,尽管它在 GCE 上不起作用。

有什么帮助吗?

如果您尝试在客户端 VM 的脚本之外创建隧道,则您可以进一步调试并丢弃sshtunnel的任何问题,方法是:

$ gcloud compute ssh server-a --zone=your-zone --ssh-flag='-NL 3306:127.0.0.1:3306' &

然后尝试连接:

$ mysql -h 127.0.0.1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM