无需提供密钥即可在 EC2 实例之间进行 SSH 连接

无需提供密钥即可在 EC2 实例之间进行 SSH 连接

我正在尝试在没有密钥的情况下从一个 EC2 实例到另一个实例启用 SSHing。

$ ssh ubuntu@slave给我一个权限被拒绝(公钥)

$ ssh -i aws-key.pem ubuntu@slave工作正如预期的那样正确。

因为我想启用 ssh less 日志记录,所以我做了以下操作

1)在主实例中生成一个密钥,例如

 $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa_master_to_slave

2)将该密钥添加到同一主实例的授权密钥列表中

 $ cat ~/.ssh/id_dsa_master_to_slave.pub >> ~/.ssh/authorized_keys

3)将公钥文件 SCP 到从属实例。

 $ scp -i aws_key.pem /home/ubuntu/.ssh/id_dsa_master_to_slave.pub  ubuntu@slave:~/

4) 将 SCP-ed 文件也添加到从属实例中的授权密钥列表中。

 $ cat id_dsa_master_to_slave.pub >> ~/.ssh/authorized_keys

当我尝试在不提供 pem 文件的情况下通过 SSH 连接时,仍然会得到

Permission Denied (Public Key)

我是否遗漏了什么?

答案1

您需要ssh-add ~/aws-key.pem在 ssh 到 ubuntu 主机之前执行此操作。这会将您的 aws-key 添加到您的 ssh 代理中。请参阅:linux.die.net/man/1/ssh-add

答案2

是的,一种方法是:

  • 使用以下方式创建新的密钥对ssh-keygen
  • 使用以下方式将私钥添加到 ssh-agentssh-add id_rsa
  • 添加生成的 id_rsa.pubssh-copy-id user@host
  • 如果 ssh-copy-id 不起作用,

cat ~/.ssh/id_rsa.pub | ssh -i ~/.ssh/my.key [email protected] "cat >> ~/.ssh/authorized_keys"

aws-key.pem另一种(糟糕的)方法是将创建实例时使用的密钥上传到所有 ec2 实例。在每个实例上,我们都可以添加此 aws-key.pem ssh-add aws-key.pem,这将在所有实例(包括 localhost)之间启用无密码 ssh。但在这种情况下,每次我们登录 ec2 时都必须重复此步骤。

如果我们需要主服务器与所有从服务器之间的无密码 ssh(即从服务器之间没有无密码 ssh),那么我们只需ssh-add aws-key.pem在主服务器上即可。

一个相关的问题是当我们尝试在 ec2 实例之间设置无密码 ssh 以设置 HADOOP 集群时。来自这里,主服务器仅通过 ssh 访问从服务器。从服务器之间不交互。文档中的另一个选项是:

注意,主机通过 ssh 访问每台工作机。默认情况下,ssh 并行运行,需要设置无密码(使用私钥)访问权限。如果您没有无密码设置,可以设置环境变量 SPARK_SSH_FOREGROUND 并为每个工作机连续提供密码。

相关内容