gpt4 book ai didi

azure - 我可以使用 Azure Bastion 隧道进入我的 CosmosDB 吗?

转载 作者:行者123 更新时间:2023-12-03 05:19:17 24 4
gpt4 key购买 nike

我正在尝试通过 Azure Bastion 连接到我的 Mongo CosmosDB 实例。我们的 IT 部门会阻止所有不在端口 443 上的出站流量,因此为了让我能够访问任何内容,我必须先通过端口 443 建立隧道。

我有一些如下所示的脚本:

  COSMOS_ID=$(az cosmosdb list --resource-group $RES_NAME | jq -r '.[] | .id')
az network bastion tunnel \
--resource-group $RES_NAME \
--name $RES_NAME \
--target-resource-id $COSMOS_ID \
--resource-port 10255 \
--port 10255 \
--debug

它发出以下输出:

Opening tunnel on port: 10255
Tunnel is ready, connect on port 10255
Ctrl + C to close

然后,我使用 mongo compass 和在 azure 门户中找到的连接字符串,将 cosmosdb 主机名替换为 localhost,在尝试连接时,我立即在终端中看到此错误,并且隧道进程导出:

Exception in thread Thread-1 (_start_tunnel):
Traceback (most recent call last):
File "/usr/local/Cellar/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="eb9b929f838485abd8c5dadb" rel="noreferrer noopener nofollow">[email protected]</a>/3.10.4/Frameworks/Python.framework/Versions/3.10/lib/python3.10/threading.py", line 1009, in _bootstrap_inner
self.run()
File "/usr/local/Cellar/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="deaea7aab6b1b09eedf0efee" rel="noreferrer noopener nofollow">[email protected]</a>/3.10.4/Frameworks/Python.framework/Versions/3.10/lib/python3.10/threading.py", line 946, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/Cellar/azure-cli/2.37.0/libexec/lib/python3.10/site-packages/azure/cli/command_modules/network/custom.py", line 8482, in _start_tunnel
tunnel_server.start_server()
File "/usr/local/Cellar/azure-cli/2.37.0/libexec/lib/python3.10/site-packages/azure/cli/command_modules/network/tunnel.py", line 184, in start_server
self._listen()
File "/usr/local/Cellar/azure-cli/2.37.0/libexec/lib/python3.10/site-packages/azure/cli/command_modules/network/tunnel.py", line 117, in _listen
auth_token = self._get_auth_token()
File "/usr/local/Cellar/azure-cli/2.37.0/libexec/lib/python3.10/site-packages/azure/cli/command_modules/network/tunnel.py", line 104, in _get_auth_token
raise exp
msrestazure.azure_exceptions.CloudError: Unexpected internal error

如果我启用调试日志记录,我会得到大量输出,但这些是异常发生前的最后 3 行:

urllib3.connectionpool: Starting new HTTPS connection (1): bst-210816cd-d967-41ee-8f90-31ee6af4574d.bastion.azure.com:443
urllib3.connectionpool: https://bst-210816cd-d967-41ee-8f90-31ee6af4574d.bastion.azure.com:443 "POST /api/tokens HTTP/1.1" 500 None
msrest.exceptions: Unexpected internal error

我已将堡垒子网添加到 cosmosdb 的防火墙,并将端口添加到 NSG...我想。我遇到的问题只是不知道我是否配置错误,或者这是否完全不受支持。

我应该能够直接通过隧道到达宇宙吗?如果不是,那么为什么不呢?或者还有哪些其他解决方案可供我通过端口 443 连接到通过隧道传输的 Cosmos?

最佳答案

当我在寻找具有相同问题的解决方案时发现这个问题,经过一番摆弄,答案是,是的,你可以!

这需要一些实验,但它适用于 2 个隧道。连接到堡垒主机(也是虚拟机),启用 ssh 隧道到其自身以通过另一个更复杂的 ssh 客户端进行连接,然后使用此 ssh 客户端“铺设”到数据库的隧道:

  • 您需要在堡垒主机上具备 ssh 功能,如果您可以通过 az 网络堡垒 ssh 进行连接,那么您应该已经具备该功能
  • 也许将您的 pub ssh-key 放入 ~/.ssh/authorized_keys (具有通常的受限目录和文件权限)以启用 pwd less 身份验证
  • 登录方式:

az 网络堡垒隧道 --name $the_bastion_host_name --resource-group $your_resource_group --target-resource-id/subscriptions/$your_subscription_id/resourceGroups/$the_resource_group_name/providers/Microsoft.Compute/virtualMachines/$the_jumphost_resource_name --资源端口“22”--端口“2222”

  • 根据您的设置、订阅和资源名称替换变量
  • 最后一个命令应该连接到您的堡垒/跳转主机,并打开隧道@port 2222@localhost 以通过另一个 ssh 客户端进行连接!
  • 保持运行/打开
  • 准备好您的(cosmos)数据库连接字符串(来自 Azure 门户)
  • 通过标准 ssh 客户端登录(或使用 putty 或类似工具进行调整):

ssh -L 20255:$your_db_name.mongo.cosmos.azure.com:10255 -p 2222 the_bastion_host_account_name@localhost

  • 因此,我们通过本地主机的端口 2222 上的 ssh(实际上是之前命令在堡垒主机上的 sshd)与我们的堡垒主机用户名(+凭据)进行连接,并打开本地端口 20255通过堡垒主机的 sshd 通过隧道连接到远程 vnet 中的 (cosmos) 数据库实例的端口 10255
  • 可以通过更改 -L 之后的第一个端口来使用其他本地端口,但在下一步中调整连接字符串
  • 根据您的数据库名称/主机和端口进行调整(默认为 10255)
  • (再次)准备好数据库连接字符串
  • 现在使用您的本地客户端连接到:mongodb://azure_dbname:leaveTheBase64CodedCredentialsfromAzurePortalHere==@localhost:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@db_app_name_from_azure_portal@
  • 在 nosql-booster 中,即使 azure Portal 数据库连接字符串中的“replicaSet=global”,我也必须取消选择副本集并使用“单一服务器”。但使用副本集设置时,连接启动失败,并出现一些协议(protocol)错误

关于azure - 我可以使用 Azure Bastion 隧道进入我的 CosmosDB 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73535520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com