我在Amazon EC2上创建了一个新的linux实例,并下载了.pem文件以允许我SSH登录。
当我试图ssh与:
ssh -i myfile.pem <public dns>
我有:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).
在这篇文章之后,我尝试chmod +600 .pem文件,但现在当我ssh时,我只是得到
Permission denied (publickey).
我犯了什么小学生的错误?
pem文件在我的主文件夹中(在macOS中)。它的权限是这样的:
-rw-------@ 1 mattroberts staff 1696 19 Nov 11:20 amazonec2.pem
我知道这个问题已经被回答了,但是对于那些已经尝试过所有这些方法的人来说,你仍然会得到恼人的“拒绝许可(公钥)”。尝试使用SUDO运行您的命令。当然,这是一个临时的解决方案,您应该正确地设置权限,但至少可以让您确定当前用户没有运行所需的权限(正如您所假设的那样)。
Sudo SSH -i amazonec2。pem ec2 - xxx - xxx - xxx xxx.us -西方- 2. compute.amazonaws.com
一旦你这样做了,你会得到这样的消息:
请以“ec2-user”用户而不是“root”用户登录。
这也鲜有文献记载。在这种情况下,只需这样做:
Sudo SSH -i amazonec2。Pem ec2-xxx-xxx-xxx-xxx -us -west-2.compute.amazonaws.com -l ec2-user
你会得到光荣的:
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
Linux用户使用。pem文件连接服务器的简单步骤如下:
步骤1:拷贝到pem文件的位置,并将其复制到home .ssh位置。
cp example.pem ~/.ssh/example.pem
步骤2:修改权限
chmod 400 ~/.ssh/example.pem
步骤3:执行以下命令
ssh -i ~/.ssh/example.pem ec2-user@host.com
因为这个命令太长了,所以你应该使用以下命令创建这个的别名:
vim ~/.bashrc
最后用下面的方式写同样的命令。
alias sshConnect='ssh -i ~/.ssh/example.pem ec2-user@host.com'
现在重新启动系统并使用sshConnect连接服务器。
除了其他答案之外,以下是我为了让它起作用所做的事情:
复制密钥到.ssh文件夹,如果你还没有:
cp的关键。pem ~ / . ssh / key.pem
给密钥适当的权限
Chmod 400 ~/.ssh/key.pem
启动ssh-agent(感谢https://stackoverflow.com/a/17848593)
Eval ssh-agent -s
ssh-add
然后,添加密钥
ssh-add ~ / . ssh / key.pem
现在你应该能够ssh EC2 (:
嗯,看了你的帖子描述,我觉得你犯了两个错误:-
设置正确的私钥权限。
下面的命令将帮助您设置正确的文件权限。
Chmod 0600 mykey.pem
您试图登录的ec2用户错误。
查看您的调试日志,我认为您已经生成了一个Amazon linux实例。该实例类型的默认用户是ec2-user。如果实例是ubuntu,那么默认用户就是ubuntu。
SSH -i privatekey。pem default_ssh_user@server_ip
Note:
For an Amazon Linux AMI, the default user name is ec2-user.
For a Centos AMI, the default user name is centos.
For a Debian AMI, the default user name is admin or root.
For a Fedora AMI, the default user name is ec2-user or fedora.
For a RHEL AMI, the default user name is ec2-user or root.
For a SUSE AMI, the default user name is ec2-user or root.
For an Ubuntu AMI, the default user name is ubuntu.
Otherwise, if ec2-user and root don't work, check with the AMI provider.
来源:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
如果您是从Windows连接,请在本地计算机上执行以下步骤。
Navigate to your .pem file.
Right-click on the .pem file and select Properties.
Choose the Security tab.
Select Advanced.
Verify that you are the owner of the file. If not, change the owner to your username.
Select Disable inheritance and Remove all inherited permissions from this object.
Select Add, Select a principal, enter your username, and select OK.
From the Permission Entry window, grant Read permissions and select OK.
Click Apply to ensure all settings are saved.
Select OK to close the Advanced Security Settings window.
Select OK to close the Properties window.
You should be able to connect to your Linux instance from Windows via SSH.
在Windows命令提示符中运行以下命令。
使用实例重置和移除显式权限。
Icacls.exe $path /reset
icacls.exe $path / grant:R "$($env:USERNAME):(R)"
icacls.exe $path /inheritance:r .执行以下命令,禁用继承并移除继承权限
您应该能够通过SSH从Windows连接到您的Linux实例。