如何在不显式使用pem密钥的情况下SSH到EC2?


21

我有一个Windows作为主要操作系统。使用VMware Player,我将Ubuntu服务器12.4设置为客户机。Ubuntu服务器具有“ ubuntu”用户。

我创建了一个新的EC2实例+设置pem密钥。在Windows机器上,当我使用腻子+ Pem键时-可以ssh。

我将pem密钥添加到了我的VMware Ubuntu服务器(/home/ubuntu/.ssh/)中。此外,我设置了以下权限: chmod 700 /home/ubuntu/.ssh chmod 600 /home/ubuntu/.ssh/*

通过Ubuntu服务器-我尝试SSH到ec2实例,但未成功: ssh ubuntu@EC2_IP Permission denied (publickey) 。如果我明确使用pem密钥,则可以使用: ssh -i /home/ubuntu/.ssh/NAME.pem ubuntu@EC2_IP -请注意,我必须使用密钥的直接路径,否则,我会得到 Warning: Identity file NAME.pem not accessible: No such file or directory. Permission denied (publickey).

请指教。谢谢!

Answers:


18

默认情况下,SSH客户端就会查找名为键id_rsaid_dsaid_ecdsa~/.ssh/。如果您的密钥不是这样命名的,则需要-i像以前一样在命令行中指定它,或者在客户端配置中指定它。

您可以添加以下内容以~/.ssh/config在SSH到EC2时自动选择此密钥:

Host *.compute-1.amazonaws.com
    IdentityFile ~/.ssh/ec2_rsa



1

您可以使用ssh-agentssh-add避免显式指定私钥。

你可以把这些命令在你.profile.bashrc让他们得到执行每次登录,您可以在底部找到一个例子启动脚本时这个职位


我做到了,但是当我重新启动时-我需要重新做一遍。有什么办法可以避免这种情况?
user798562 2013年

编辑了我的答案以包括该内容。
David Levesque 2013年

0

ssh客户端identify file根据中设置的配置进行查找/etc/ssh/ssh_config。因此,您可以在此处指定身份文件,并记住您可以在ssh客户端配置文件中列出多个身份文件。在ssh手册页中-

    -i identity_file
         Selects a file from which the identity (private key) for public key authentication is read.  The default is ~/.ssh/identity
         for protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/id_rsa for protocol version 2.  Identity files may also
         be specified on a per-host basis in the configuration file.  It is possible to have multiple -i options (and multiple identiâ
         ties specified in configuration files).

例如,对于RSA密钥,默认位置为〜/ .ssh / id_rsa。正如Andrei Mikhaltsov所建议的那样,您可以将私钥放在/ home / ubuntu / ssh / id_rsa中,并且无需在命令行中指定即可进行连接。如果该文件名已经存在并拥有另一个私钥,您仍然可以在IdentityFile参数处自定义ssh客户端配置文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.