设置从公共服务器到专用服务器 - EC2的SSH连接?

时间:2017-01-06 15:12:18

标签: amazon-web-services amazon-ec2

我有一个EC2 Linux服务器,它在子网a中有公共IP,此外我在子网b中创建了另一个EC2服务器,它有一个私有IP。两台服务器都在同一个VPC中。我想从公共服务器ssh到私人服务器。 SSH端口在服务器的安全组设置上打开。但我得到了许可(公共知识产权)

[ec2-user@ip-10-0-10-62 ~]$ ssh ec2-user@10.0.20.71
The authenticity of host '10.0.20.71 (10.0.20.71)' can't be established.
RSA key fingerprint is 11:19:79:39:a3:04:d2:23:5e:af:9e:c6:98:9c:7b:bd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.20.71' (RSA) to the list of known hosts.
Permission denied (publickey).

我相信,我需要以某种方式将私有服务器的公钥添加到公共服务器中。但我不知道它的正确方法,如果我错过了其他一些设置。

我用谷歌搜索但找不到解决这个问题的直接方法。

更新:

如果我使用添加代理,那么只能从我的电脑上我可以ssh到私人服务器,如果有更多的用户需要ssh到私人服务器,所有都需要进行代理转发,所以我不确定是否这是本案的最佳方式。如果我想在连接到公共服务器时使用密钥,然后在不使用密钥的情况下ssh到私有服务器,该怎么办?像:

ssh ec2-user@10.0.20.71

One Ans:可以使用默认密钥位置。 (身份档案)

Setting the default ssh key location

4 个答案:

答案 0 :(得分:2)

您应该为第二个实例分配了一个公钥。您应该在创建公钥时下载该公钥。您需要使用SFTP或SCP将该公钥文件上传到第一个实例。然后,您需要使用-i命令的ssh选项指定该公钥文件的路径。

答案 1 :(得分:1)

您要连接的实例与您用于连接的机器一样好。假设你有一个实例A和一个实例B,如果你想从A - >连接; B然后它就像从你的机器连接到B

一样好

要实现这一点,您必须执行与连接到计算机B相同的操作,将B的pem文件下载到计算机A上(在这种情况下,您必须使用scp将pem文件上载到计算机A命令)

发布这个,你应该能够正确地ssh。同样,我想知道ssh的用例,因为在samba,sftp等的帮助下,还有许多其他选项可以在服务器之间共享数据。

您可以查看此链接,了解如何scp:scp (secure copy) to ec2 instance without password

干杯!

答案 2 :(得分:1)

假设keypair2.pem是您的私人服务器的私钥(10.0.20.71)(如果您使用AWS dashboard / CLI / SDK创建密钥对,则会返回私钥)

来自公共服务器:

ssh -i keypair2.pem ec2-user@10.0.20.71

如果私人服务器是Ubuntu机器:

ssh -i keypair2.pem ubuntu@10.0.20.71

如果仍有问题,请发布以下内容:

ssh -v -i keypair2.pem ec2-user@10.0.20.71

答案 3 :(得分:1)

由于您使用自己的密钥对启动了每个密钥对,因此您必须使用每个服务器的相应密钥对来ssh到它。因此,有两种方法可以登录10.0.20.71。 1)您可以将用于启动它的私钥的副本放到公共服务器上,然后将其用于授权给私有服务器 - 例如。

[ec2-user@ip-10-0-10-62 ~]$ ssh -i you_private_key.pem ec2-user@10.0.20.71

可以说更安全的解决方案将是使用ssh代理转发。使用此解决方案,您不会在服务器上存储私钥。在您的计算机上,您应该拥有用于创建2个EC2实例的2个密钥。您可以使用命令

将这两者添加到ssh代理程序中
$ ssh-add /path/to/key

进入代理后,您可以使用代理转发登录公共服务器:

 ssh -A ec2-user@<public ip address of public server>

然后ssh到没有密钥的私人服务器(代理从您的计算机转发密钥)

ssh ec2-user@10.0.20.71