2017-01-06 94 views
1

我有一个EC2 Linux服务器,它在子网a中拥有公共IP,除此之外,我还在子网b中创建了另一台EC2服务器,它具有私有IP。两台服务器都在同一个VPC中。我想从公共服务器ssh到私人服务器。 SSH端口在服务器的安全组设置上打开。但我否认设置从公共服务器到私有服务器-EC2的SSH连接?

[[email protected] ~]$ ssh [email protected] 
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). 

我相信权限(公网IP),我需要私人服务器的公钥加入到公共服务器弄好了。但我不知道它的正确方法,如果我错过了其他一些设置。

我已经使用Google搜索,但找不到一个直接的方法来解决这个问题。

更新时间:

如果我使用添加剂,则只能从我的电脑我可以ssh到专用服务器,如果有就需要ssh到专用服务器更多的用户,都需要做代理转发所以我不确定这是否是这种情况的最佳方式。如果我想要连接到公共服务器时使用密钥,那么在没有使用密钥的情况下ssh到私有服务器会怎么样。像:

ssh [email protected] 

一个答案:可以使用默认密钥位置。

Setting the default ssh key location

+0

您是否使用相同的密钥对启动了两台服务器? – helloV

+0

@helloV没有钥匙对不同 – Matrix

回答

1

既然你推出的每一个与它的流n密钥对,你将不得不使用每个服务器各自的密钥对ssh进入它。所以,有两种方法登录到10.0.20.71。 1)您可以将用于启动它的私钥的副本放到公共服务器上,然后将其用于授权给私有服务器 - 例如,

[[email protected] ~]$ ssh -i you_private_key.pem [email protected] 

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

ssh -A [email protected]<public ip address of public server> 

然后SSH私有服务器而不答:你可以这两种对SSH代理与命令

$ ssh-add /path/to/key 

一旦你可以登录到公共服务器与代理转发代理加密钥(代理从您的计算机转发密钥)

ssh [email protected] 
+0

感谢您的回答。它非常接近我需要的内容。但有另一台服务器具有这样的设置,我可以通过私钥服务器ssh访问私钥服务器,但是当我通过计算机连接到公用服务器时,我使用:ssh -i“/path/key/key1.pem”user @ ec2 -.... aws.com然后从公共服务器,我连接到私人服务器:ssh [email protected]。我只知道私有服务器(id_rsa n id_rsa.pub)的密钥位于公共服务器上的目录〜/ .ssh /中,似乎它是由sshd setup以某种方式不由用户添加的。你知道这个设置是如何工作的吗?请参阅最新的问题。 – Matrix

2

你应该已经指定了公钥二审(身份文件)。您创建时也应该下载该公钥。您需要使用SFTP或SCP将该公钥文件上载到第一个实例。然后,您需要使用ssh命令的-i选项指定该公钥文件的路径。

+0

感谢您的回复。我在制作服务器时创建并分配了一个密钥对。每个服务器都有自己的密钥(key.pem)。那么我应该从私人服务器的.pem密钥创建一个公钥并将其复制到我的公用服务器?你建议哪条路? 〜/ .ssh /?但关于sshd安装呢? – Matrix

+0

您不必在'sshd'中更改任何内容。 '〜/ .ssh /'是通常的路径。您需要简单地将服务器B的key.pem文件复制到服务器A上,并在从服务器A连接到服务器B时使用该文件。 –

1

您想要连接的实例与您用于连接的计算机一样好。所以假设你有一个实例A和一个实例B,并且如果你想从A - > B连接,那么它就像从你的机器连接到B一样好。为了达到这个目的,你必须做同样的事情您连接到机器B,将B的pem文件下载到机器A上(在这种情况下,您将不得不使用scp命令将pem文件上传到机器A)

发布此信息,您应该能够正确地ssh。同样,我想知道有关ssh的用例,因为还有很多其他的选择与桑巴,SFTP的帮助服务器之间共享数据等

您可以检查有关如何使用scp此链接:scp (secure copy) to ec2 instance without password

干杯!

1

假设keypair2.pem是私人服务器的私钥(10.0.20。71)(如果使用AWS控制台/ CLI/SDK创建一个密钥对,私钥返回)

从公共服务器:

ssh -i keypair2.pem [email protected] 

如果专用服务器是Ubuntu的机器:

ssh -i keypair2.pem [email protected] 

如果您仍然有问题,后期的输出:

ssh -v -i keypair2.pem [email protected]