为SSH服务器中的Ubuntu定义一个set密钥文件

时间:2014-11-12 07:11:50

标签: linux shell ubuntu ssh amazon-ec2

我有两个Amazon EC2 Ubuntu实例。当我连接到其中一个时,我可以做到

ssh ubuntu@54.123.4.56

并且shell使用来自〜/ .ssh目录的正确密钥文件。

我刚刚设置了一个新实例,我试图弄清楚如何为这个新实例复制该行为。这是一件小事,只是让我疯了。当我登录时:

ssh -i ~/.ssh/mykey.pem ubuntu@54.987.6.54

它工作正常,但只是

ssh ubuntu@54.987.6.54

我明白了:

Permission denied (publickey).

我不知道我是如何设法让第一台服务器以这种方式工作的,但是我希望能够在没有" -i abc.pem&的情况下将ssh运行到第二台服务器#34;论点。权限是600:

-r-------- 1 mdexter mdexter 1692 Nov 11 20:40 abc.pem

我尝试过:我从远程服务器上的authorized_keys复制了公钥,并将其粘贴到本地服务器上的authorized_keys,使用mdexter@172.12.34.56(私钥),因为我认为这可能是创建该关联的原因。该密钥与shell服务器之间的shell。

我在如何设置两个服务器之间唯一的区别就是第一个,我在PuTTy中创建了一个.ppk密钥,以便我可以通过FileZilla连接SFTP。但我认为SSH仍在使用亚马逊提供的.pem。

如何告诉shell只知道在SSH连接到该特定IP时始终使用我的.pem密钥?这是微不足道的,但我试图加强对公钥/私钥的基本理解,并且我想知道这是否适用于此。

1 个答案:

答案 0 :(得分:2)

你可以通过三种方式解决这个问题:

  1. ~/.ssh/mykey.pem的内容放入{s}进入第二个实例的机器上~/.ssh/id_rsa。确保您还将~/.ssh/id_rsa的权限更改为600

  2. 使用ssh-agent(ssh-agent将为您管理密钥)

    • 启动ssh-agent

      eval `ssh-agent -s`
      
    • 使用ssh-add

      将密钥添加到ssh-agent
      ssh-add mykey.pem
      
  3. 使用ssh-config文件:

    您可以使用ssh配置文件。从您尝试ssh的计算机上,将以下内容保留在~/.ssh/config文件中(确保授予此文件600权限):

    Host host2
      HostName 54.987.6.54
      Port 22
      User ubuntu
      IdentityFile ~/.ssh/mykey.pem
    

    一旦你这样做,你就可以像这样访问ssh:

    ssh host2
    
  4. 执行上述任何步骤后,您应该能够在不指定密钥路径的情况下进入第二个实例。

    注意:第二个选项要求您每次注销时都使用ssh-add添加密钥并重新登录,以便永久注入此SO question