我有一个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:可以使用默认密钥位置。 (身份档案)
答案 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