[英]Unable to SSH into my Compute Engine VM instance on Google Cloud
[英]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.