这实际上是 这。
我在 AWS 上创建了一个 Aurora Serverless 数据库,根据 Serverless aurora 的要求创建了一个包含 2 个子网的 VPC,并创建了一个连接到 aurora 所连接子网的 Cloud9。然后,我从 aws 平台内部创建了一个私钥,并将其下载到我的本地计算机。
现在,我正尝试连接到我的无服务器数据库,但没有成功。我曾尝试创建一个 ssh 隧道连接,例如像这样ssh -i /path/to/file.pem] -N -L 3307:[DB endpoint].drds.amazonaws.com:3306 myAwsUser@[Cloud9 point]
但没有成功,更简单的方法也没有成功,ssh -i /path/to/file.pem] myAwsUser@[Cloud9 point]
我几乎可以肯定我没有将我创建的私钥文件分配给 cloud9 上的使用。
据我所知,在 AWS 之外(即本地计算机或其他远程服务器),连接到 AWS 上的无服务器数据库的唯一方法是使用 ssh 隧道,对吗?如果是这样,如何启用与数据库的密钥连接?
我是否需要 Cloud9 帐户?
更新
好的,现在似乎有些事情更清楚了。感谢@MLu。所以我创建了一个新的 EC2 实例,使用免费套餐。我添加了对无服务器 rdst2.micro
上 使用的相同安全组的允许访问。所以我的 Rds 和 EC2 都有一个共同的安全组。 现在,我可以通过 ssh -i file.pem ec2-user@[EC2 dns].compute.amazonaws.com 连接到 EC2 实例,但我无法连接到 mysql。给我一个错误。 Amazon Linux 2 AMI
mysql -h [db endpoint].rds.amazonaws.com -u user
mysql: command not found
通过执行@MLu 提到的操作,ssh -v -i test.pem -N -L 3307:[db endpoint].rds.amazonaws.com:3306 ec2-user@[EC2 dns].compute.amazonaws.com
我得到了这个
OpenSSH_6.6.1,OpenSSL 1.0.1f 2014 年 1 月 6 日
debug1:读取配置数据 /etc/ssh/ssh_config
debug1:/etc/ssh/ssh_config 第 19 行:应用 * 的选项
debug1:连接到 [EC2 PUBLIC DNS][xx.xx.xx.xx] 端口 22。
debug1:已建立连接。
debug1:身份文件 test.pem 类型 -1
debug1:身份文件 test.pem-cert 类型 -1
debug1:为协议 2.0 启用兼容模式
debug1:本地版本字符串 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.10
debug1:远程协议版本 2.0,远程软件版本 OpenSSH_7.4
debug1:匹配:OpenSSH_7.4 pat OpenSSH* compat 0x04000000
debug1:SSH2_MSG_KEXINIT 已发送
debug1:SSH2_MSG_KEXINIT 已接收
debug1:kex:服务器->客户端 aes128-ctr[电子邮件保护]无
debug1: kex: 客户端->服务器 aes128-ctr[电子邮件保护]无
debug1:发送 SSH2_MSG_KEX_ECDH_INIT
debug1:期待 SSH2_MSG_KEX_ECDH_REPLY
debug1:服务器主机密钥:ECDSA debug1:主机“EC2 主机”已知并与 ECDSA 主机密钥匹配。
debug1:在 .../.ssh/known_hosts:24 中找到密钥
debug1:ssh_ecdsa_verify:签名正确
debug1:已发送 SSH2_MSG_NEWKEYS
debug1:需要 SSH2_MSG_NEWKEYS
debug1:已收到 SSH2_MSG_NEWKEYS
debug1:已发送 SSH2_MSG_SERVICE_REQUEST
debug1:已收到 SSH2_MSG_SERVICE_ACCEPT
debug1:可以继续的身份验证:publickey、gssapi-keyex、gssapi-with-mic
debug1:下一个身份验证方法:gssapi-keyex
debug1:没有有效的密钥交换上下文
debug1:下一个身份验证方法:gssapi-with-mic
debug1:未指定的 GSS 故障。次要代码可能会提供更多信息
没有可用的 Kerberos 凭据debug1:未指定的 GSS 故障。次要代码可能提供更多信息
没有可用的 Kerberos 凭据debug1:未指定的 GSS 故障。次要代码可能会提供更多信息
debug1:未指定的 GSS 故障。次要代码可能提供更多信息
没有可用的 Kerberos 凭据debug1:下一个身份验证方法:publickey
debug1:尝试私钥:test.pem
debug1:key_parse_private2:缺少开始标记
debug1:读取 PEM 私钥完成:类型 RSA
debug1:身份验证成功(公钥)。
已向 [EC2 公共 DNS]([xx.xx.xx.xx]:22)进行身份验证。debug1
:与 LOCALHOST:3307 的本地连接转发到远程地址 [DB 端点]:3306
debug1:本地转发正在 ::1 端口 3307 上监听。debug1
:通道 0:新的 [端口监听器]
debug1:本地转发正在 127.0.0.1 端口 3307 上监听。debug1
:通道 1:新的 [端口监听器]
debug1:正在请求[电子邮件保护]
debug1:进入交互式会话。debug1
:client_input_global_request:rtype[电子邮件保护]want_reply 0
,然后终端就挂了。curson 正在工作,但我无能为力 excel Ctrl+C 只会关闭连接。
我还看到有一个到 RDS 的 api 连接。这在无服务器上如何工作?我可以从那里执行所有 mysql 命令吗?我想这对我的 java 应用程序很有用,而不是通过 ssh 和 jdbc。谢谢
答案1
首先:SSH 是不是SSL
SSH用于登录目标系统'壳主要用于交互使用。即你通过 SSH 连接到 EC2 实例然后运行一些 Linux 命令。
SSL用于加密各种应用程序协议- HTTP、SMTP 以及您的情况下的 MySQL 协议。
在你的情况下你需要使用SSL, 不是SSH。
首先按照说明为 Aurora 启用 SSL使用 SSL 加密与数据库实例的连接
然后在客户端使用mysql --ssl --ssl-cert=... --host=...
。您可能需要使用许多参数:
~ $ mysql --help | grep ssl
--ssl Enable SSL for connection (automatically enabled with
other flags).
--ssl-ca=name CA file in PEM format (check OpenSSL docs, implies
--ssl).
--ssl-capath=name CA directory (check OpenSSL docs, implies --ssl).
--ssl-cert=name X509 cert in PEM format (implies --ssl).
--ssl-cipher=name SSL cipher to use (implies --ssl).
--ssl-key=name X509 key in PEM format (implies --ssl).
--ssl-crl=name Certificate revocation list (implies --ssl).
--ssl-crlpath=name Certificate revocation list path (implies --ssl).
--ssl-verify-server-cert
Verify server's "Common Name" in its cert against
hostname used when connecting. This option is disabled by default.
实际上,在再次阅读你的问题后,我发现你有一个不同的问题——你想访问无服务器 Aurora来自 AWS VPC 网络之外, 正确的?
无服务器 Aurora 似乎不支持公共 IP,所以是的,您必须将流量从笔记本电脑隧道传输到 VPC。几个选项:
SSH 隧道尝试设置时。与通过 Cloud9 建立隧道相比,启动一个新的 EC2 实例可能更简单,即使是最小的实例也
t3.nano
可以,为其提供公共 IP 地址并使用亚马逊 Linux 2 AMI。一旦隧道启动,使用以下命令穿过它:[you laptop] ~ $ ssh -v -i /path/to/file.pem -N -L 3307:[DB endpoint].drds.amazonaws.com:3306 [email protected]
OpenVPN 隧道- 这是一个更透明的选项,但设置起来稍微复杂一些。本质上,您将直接通过网络访问 VPC 中的资源。
在这两种情况下,请确保您的极光安全集团允许从EC2 实例!否则您将无法连接。
希望有帮助:)