我的主要操作系统是 Windows。使用 VMware Player,我设置了一台 Ubuntu 服务器 12.4 作为客户机。Ubuntu 服务器有“ubuntu”用户。
我创建了一个新的 EC2 实例 + 设置 pem 密钥。从 Windows 机器上,当我使用 putty+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).
请指教。谢谢!
答案1
ssh-添加〜/.ssh/KEY_PAIR_NAME.pem
答案2
默认情况下,SSH 客户端将在 中查找名为id_rsa
、id_dsa
和的密钥。如果您的密钥不是这样命名的,您需要像以前一样在命令行中使用 指定它,或者在客户端配置中指定它。id_ecdsa
~/.ssh/
-i
您可以添加类似的内容以便~/.ssh/config
在 SSH 连接到 EC2 时自动选择此密钥:
Host *.compute-1.amazonaws.com
IdentityFile ~/.ssh/ec2_rsa
答案3
您如何命名您的私钥?它应该有默认的 id_rsa 文件名(将 pem 文件重命名为 /home/ubuntu/.ssh/id_rsa)
答案4
identify file
ssh 客户端根据 中的配置集进行查找/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 中,这样无需在命令行中指定它即可连接。如果该文件名已经存在并包含另一个私钥,您仍然可以在参数处自定义 ssh 客户端配置文件IdentityFile
。