我有两个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密钥?这是微不足道的,但我试图加强对公钥/私钥的基本理解,并且我想知道这是否适用于此。
答案 0 :(得分:2)
你可以通过三种方式解决这个问题:
将~/.ssh/mykey.pem
的内容放入{s}进入第二个实例的机器上~/.ssh/id_rsa
。确保您还将~/.ssh/id_rsa
的权限更改为600
。
使用ssh-agent(ssh-agent将为您管理密钥)
启动ssh-agent
eval `ssh-agent -s`
使用ssh-add
ssh-add mykey.pem
使用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
执行上述任何步骤后,您应该能够在不指定密钥路径的情况下进入第二个实例。
注意:第二个选项要求您每次注销时都使用ssh-add
添加密钥并重新登录,以便永久注入此SO question。