Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 使用不同的SSH密钥部署私有EC2实例(比如EC2.pem)和Bastion主机(比如BasionKey.pem)-AWS VPC_Amazon Web Services_Ssh Keys_Amazon Vpc - Fatal编程技术网

Amazon web services 使用不同的SSH密钥部署私有EC2实例(比如EC2.pem)和Bastion主机(比如BasionKey.pem)-AWS VPC

Amazon web services 使用不同的SSH密钥部署私有EC2实例(比如EC2.pem)和Bastion主机(比如BasionKey.pem)-AWS VPC,amazon-web-services,ssh-keys,amazon-vpc,Amazon Web Services,Ssh Keys,Amazon Vpc,我知道不建议在一个帖子中问多个问题,但它们都是紧密耦合的,因此在一个帖子下提问 我试图使用Bastion主机从internet通过SSH连接到VPC中的私有EC2实例。我遇到了两种方法。 注意当我启动我的私有EC2实例和Bastion主机时,我选择了不同的密钥。(在这两种方法中,我看到作者对EC2和Bastion使用了相同的密钥) 方法1:如中所示配置SSH ProxyCommand 方法2:使用ssh-A选项的ssh代理命令 问题1:在方法2中,我做到了 ssh-add ~/Downloads

我知道不建议在一个帖子中问多个问题,但它们都是紧密耦合的,因此在一个帖子下提问

我试图使用Bastion主机从internet通过SSH连接到VPC中的私有EC2实例。我遇到了两种方法。 注意当我启动我的私有EC2实例和Bastion主机时,我选择了不同的密钥。(在这两种方法中,我看到作者对EC2和Bastion使用了相同的密钥)

方法1:如中所示配置SSH ProxyCommand

方法2:使用ssh-A选项的ssh代理命令

问题1:在方法2中,我做到了

ssh-add ~/Downloads/Ec2.pem
ssh-add ~/Downloads/BastionKey.pem
我向ssh代理添加这两个密钥的方法正确吗?这样,作为第一步,我可以ssh到Bastion,然后作为第二步,我必须显式ssh到私有EC2

问题2:方法1反对(方法2)2步ssh过程的想法,但建议使用ProxyCommand,以便最终用户能够在单个步骤中直接将ssh连接到专用EC2。通过这种方式,Bastion主机的系统管理员将无法控制ssh连接到单个EC2实例。事实上,作者演示了,如果您ssh连接到Bastion主机(它将成功),然后ssh连接到EC2,它将失败。我的理解正确吗

问题3:方法1不适合我。我对~/.ssh/config使用了相同的结构,但密钥文件路径不同。我无法直接通过ssh连接到我的专用EC2。我甚至尝试了两步过程,但我只能登录到Bastion主机,我无法通过ssh连接到EC2。我所有的安全组、ACL、Internet网关、NAT网关和VPC设置都很好,否则方法2就不起作用了。我可能做错了什么

cat ~/.ssh/config 
HOST bastion
Hostname ec2-5x-xx-xx-xx.compute-1.amazonaws.com
User ec2-user
IdentityFile /Users/myname/Downloads/BastionKey.pem

HOST *.ec2.internal
User ec2-user
IdentityFile /Users/myname/Downloads/Ec2.pem
ProxyCommand ssh -q -W %h:%p bastion
问题4:在1和2中,建议采用哪种方法,以及在为Bastion和EC2选择不同的键时,必须遵循哪些附加步骤

错误输出:

ssh -v ip-10-0-1-12.ec2.internal
OpenSSH_7.8p1, LibreSSL 2.6.2
debug1: Reading configuration data /Users/myname/.ssh/config
debug1: /Users/myname/.ssh/config line 6: Applying options for *.ec2.internal
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug1: Executing proxy command: exec ssh -q -W ip-10-0-1-12.ec2.internal:22 bastion
debug1: identity file /Users/myname/Downloads/Ec2.pem type -1
debug1: identity file /Users/myname/Downloads/Ec2.pem-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.8
/bin/false: No such file or directory
ssh_exchange_identification: Connection closed by remote host
尝试在ssh配置中使用bastions公共DNS名称,也可以使用VPC后面的内部ec2 DNS名称。(AWS DNS有时至多是粗略的)

注意:*.ec2.internal assums您将为每个需要通过堡垒访问代理的ec2使用相同的ssh密钥。如果情况并非如此,请将*.ec2.internal替换为which-internal-ip.ec2.internal,并为每个ec2添加一个条目


希望这能解决您的问题。

请将您的问题移至(删除此处,重新发布)。很遗憾,它仍然不起作用。我已经用您建议的配置文件(DNS名称)更新了原始问题,还粘贴了详细的ssh输出。我很惊讶ssh-agent/ssh-add方法可以工作,我可以通过ssh连接到我的私有IP,但是ProxyCommand方法不能。无法找出这里出了什么问题。
HOST bastion
Hostname ec2-example-ip.compute-1.amazonaws.com
User ec2-user
IdentityFile /Users/myname/Downloads/BastionKey.pem

HOST *.ec2.internal
User ec2-user
IdentityFile /Users/myname/Downloads/Ec2/Ec2.pem
ProxyCommand ssh -q -W %h:%p bastion