这实际上是这的后续问题.我在AWS上创建了一个数据库,按照无服务器极光的要求创建了一个带有2个子网的VPC,并创建了一个连接到极光所连接的子网的Cloud9。然后,我从aws平台内部创建了一个私钥,并将其下载到本地计算机。现在,我试图连接到我的无服务器DB,但没有成功。我曾经尝试创建一个ssh隧道连接,比如so ssh -i /path/to/file.pem] -N -L 3307:[DB endpoint].drds.amazonaws.com:3306 myAwsUser@[Cloud9 point],但是没有工作,我几乎可以肯定的是,我创建的私钥文件没有分配给一个在cloud9上使用的简单的ssh -i /path/to/file.pem] myAwsUser@[Cloud9 point]。
据我所知,在AWS (即本地机器或其他远程服务器)之外,连接到aws上的无服务器数据库的唯一方法是使用ssh隧道,对吗?如果是,如何启用到DB的键连接?我需要Cloud9帐户吗?
更新好,现在似乎有些事情更清楚了。感谢@MLu。因此,我创建了一个新的EC2实例,使用Amazon Linux 2 AMI上的免费层t2.micro。我将允许的访问添加到我在无服务器rds上使用的同一个安全组。因此,我的Rds和EC2都有一个共同的安全组。现在,我可以通过ssh -i file.pem ec2-user@.compute.amazonaws.com连接到-i实例,但是在那里我没有办法连接到mysql。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的选项:连接到端口22。debug1:建立连接。debug1:标识文件test.pem type -1 debug1: identity file test.pem-cert type -1 debug1:启用协议2.0 debug1的兼容性模式:本地版本字符串SSH-2.0-OpenSSH_6.1p1 Ubuntu-2 ubuntu2.10 debug1:远程协议版本2.0,远程软件版本OpenSSH_7.4 debug1: match: OpenSSH_7.4 pat OpenSSH* compat 0x04000000 debug1: SSH2_MSG_KEXINIT Server debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client key 128-ctr hmac-sha1-etm@openssh.com无debug1: kex: client->server key 128-ctr hmac-sha1-etm@openssh.com主机'EC2主机‘是已知的,并与ECDSA主机密钥匹配。debug1:在..ssh/知名主机中找到密钥:24 debug1: ssh_ecdsa_verify:签名更正debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS SSH2_MSG_NEWKEYS debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT Receiddebug1:身份验证可以继续: publickey,gssapi-keyex,debug1:下一种身份验证方法: gssapi-keyex debug1:无有效密钥交换上下文debug1:下一种身份验证方法:gssapi:未指定的GSS失败。次要代码可能提供更多信息,没有Kerberos凭据可用的debug1:未指定的GSS失败。次要代码可能提供更多信息,没有Kerberos凭据可用的debug1:未指定的GSS失败。次要代码可能会提供更多信息,debug1:未指定的GSS失败。次要代码可能提供更多信息,没有Kerberos凭据可用的debug1: Next身份验证方法: publickey debug1: Trying私钥: test.pem debug1: key_parse_private2:缺失begin标记debug1: read PEM私钥完成:键入RSA debug1:身份验证成功(公钥)。认证为EC2公共dns。debug1:本地连接到本地主机: 3307转发到远程地址:3306 debug1:本地转发侦听::1端口3307。debug1:通道0:新debug1:本地转发侦听127.0.0.1端口3307。debug1:第1频道:新的debug1: Requesting @openssh.com debug1:.debug1: client_input_global_request: rtype hostkeys 00@openssh.com want_reply 0,然后终端挂起。柯森正在工作,但没有什么是我能做的,Ctrl+C只是关闭连接。
我还看到了与RDS的api连接。这是如何在无服务器上工作的?我可以从那里执行所有mysql命令吗?在我的java应用程序中,它将是有用的,而不是遍历ssh和jdbc,我想。谢谢
发布于 2018-10-17 18:38:49
首先也是最重要的:SSH是而不是<>SSL
SSH用于登录目标系统的shell,主要用于交互使用。也就是说,您将SSH放到一个EC2实例中,然后运行一些Linux命令。
SSL用于加密各种应用程序协议-- HTTP、SMTP,以及在您的示例中是MySQL协议。
在您的情况下,您需要使用SSL,而不是SSH。
首先为Aurora启用SSL,如使用SSL加密到DB实例的连接中所述
然后在客户端使用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.实际上,在再次阅读您的问题之后,我发现您有一个不同的问题--您希望从AWS网络之外访问Serverless Aurora,对吗?
无服务器Aurora似乎不支持公共IP,所以是的,您将不得不隧道从您的笔记本到VPC的流量。有几种选择:
t3.nano也可以这样做,给它一个公共IP地址,并使用AmazonLinux2AMI。一旦它通过隧道:~$ ssh -v -i /path/to/file.pem -N -L 3307:.drds.amazonaws.com:3306 ec2-user@IP.AD.DR.ES在这两种情况下,请确保您的Aurora安全组允许来自EC2实例的访问!否则你就无法连接。
希望有帮助:)
https://serverfault.com/questions/935943
复制相似问题