Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在Mac OSx上通过SSH连接到EC2时出现权限错误_Macos_Ssh_Amazon Ec2 - Fatal编程技术网

Macos 在Mac OSx上通过SSH连接到EC2时出现权限错误

Macos 在Mac OSx上通过SSH连接到EC2时出现权限错误,macos,ssh,amazon-ec2,Macos,Ssh,Amazon Ec2,我是EC2的新手。我从此网站创建了我的安全凭据: 它工作得很好,我重新启动了,现在当我尝试连接时,我得到了一个登录/密码提示。(我从未设置过。)几次尝试后,我出现以下错误: 权限被拒绝(公钥、带麦克风的gssapi) 我做错了什么?我可以想到两种可能性,尽管它们都在您引用的链接中提到: 您没有在用于登录服务器的SSH命令中指定正确的SSH密钥对文件或用户名: ssh-i[密钥对文件的完整路径]根@[EC2实例主机名或IP地址] 您对密钥对文件没有正确的权限;你应该使用 chmod 600[密钥

我是EC2的新手。我从此网站创建了我的安全凭据:

它工作得很好,我重新启动了,现在当我尝试连接时,我得到了一个登录/密码提示。(我从未设置过。)几次尝试后,我出现以下错误:

权限被拒绝(公钥、带麦克风的gssapi)


我做错了什么?

我可以想到两种可能性,尽管它们都在您引用的链接中提到:

  • 您没有在用于登录服务器的SSH命令中指定正确的SSH密钥对文件或用户名:

    ssh-i[密钥对文件的完整路径]根@[EC2实例主机名或IP地址]

  • 您对密钥对文件没有正确的权限;你应该使用

    chmod 600[密钥对文件]

  • 以确保只有您可以读取或写入文件

    尝试在ssh中使用-v选项,以获取有关它失败的具体位置的更多信息,如果需要更多帮助,请返回此处

    [更新]:好的,如果一切设置正确,那么这就是您应该看到的:

    debug1: Authentications that can continue: publickey,gssapi-with-mic
    debug1: Next authentication method: publickey
    debug1: Trying private key: ec2-keypair
    debug1: read PEM private key done: type RSA
    debug1: Authentication succeeded (publickey).
    

    您是否从包含ec2密钥对文件的目录运行ssh命令?如果是这样,请尝试指定-i./ec2密钥对以消除路径问题。还要检查“ls-l[ec2密钥对的完整路径]”文件,并确保权限为600(显示为rw-----)。如果这些都不起作用,我会怀疑密钥对文件的内容,所以请尝试使用链接中的步骤重新创建它。

    我能够连接的关键是使用“ec2用户”用户而不是root用户。即:

    ssh -i [full path to keypair file] ec2-user@[EC2 instance hostname or IP address]
    

    您确定使用了正确的实例吗?我遇到了这个问题,并意识到我尝试的ubuntu实例中有4个没有安装SSH服务器

    有关优秀服务器的列表,请参见“获取图像”部分。听起来你可能在用别的东西。。。这些图片上的默认用户名是ubuntu


    如果您有一个在PC上工作的PPK文件,请使用puttygen.exe将其导出为OpenSSH文件,并在Mac(任何Unix机器)上使用

    我也犯了同样的错误--

    当我在Windows上使用PPK文件时,我按照上面所述的步骤进行操作,结果是宾果


    $ssh-i ec2 openssh密钥root@ec2-实例ip在我的例子中是因为我的主目录的权限是775,SSH对此不满意。它应在执行以下操作后工作:

    server$ chmod go-w ~/
    server$ chmod 700 ~/.ssh
    server$ chmod 600 ~/.ssh/authorized_keys
    
    今天下午我也有类似的经历。我在EC2上设置django,突然间我无法再使用SSH连接到这个盒子中。很高兴我仍然有一个活动连接,所以我修改了
    /etc/ssh/sshd\u config
    来设置:

    PasswordAuthentication yes
    
    并为
    ec2用户设置密码
    ,然后输入密码即可登录


    然而,在谷歌搜索之后,我发现了以下线索:。事实证明,在安装django的过程中,我更改了主目录的权限,SSH对此非常严格。因此,必须正确设置文件权限。

    我可以使用ec2用户登录


    ssh-i[密钥对文件的完整路径]ec2用户@[ec2实例主机名或IP地址]

    标记mecca831的答案:

    ssh-v-i-key.pem ec2-user@11.11.11.11

    [ec2-user@ip-11.11.11.11~]$sudo passwd ec2用户 新密码 新密码

    [ec2-user@ip-11.11.11.11~]$sudo vi/etc/ssh/sshd_config 按如下方式修改该文件:

        # To disable tunneled clear text passwords, change to no here!
        PasswordAuthentication yes
        #PermitEmptyPasswords no
        # EC2 uses keys for remote access
        #PasswordAuthentication no
    
    ssh ec2-user@11.11.11.11
    
    拯救

    [ec2-user@ip-11.11.11.11~]$sudo服务sshd站 [ec2-user@ip-11.11.11.11~]$sudo服务sshd启动

    您应该能够按如下方式退出并使用ssh:

        # To disable tunneled clear text passwords, change to no here!
        PasswordAuthentication yes
        #PermitEmptyPasswords no
        # EC2 uses keys for remote access
        #PasswordAuthentication no
    
    ssh ec2-user@11.11.11.11
    

    并提示输入密码,不再需要密钥。

    以上所有方法都对我没有帮助,但与用户互动似乎是有希望的。对于我的配置,使用“ubuntu”是正确的


    ssh-i[keypair file的完整路径]ubuntu@[EC2实例主机名或IP地址]

    我在使用用于Eclipse的AWS工具包时遇到了相同的问题。我创建了Getting Started实例OK并打开了一个shell。但是,用户被设置为ec2用户。我用开壳作为。。。命令并将用户设置为root用户。然后它成功了。

    经过大约半小时的搜索和调试,我终于找到了答案。我的情况是,我对两个不同的ec2实例使用同一个pem文件,它只对其中一个有效,而对另一个无效

    我使用的第一个实例是标准的aws linux ami amzn-ami-hvm-2014.03.2.x86_64-ebs。我只是用

    ssh -i mypemfile.pem ec2-user@myec2ipaddress 
    
    它成功了

    然后,我启动了fedora实例fedora-x86_64-19-20140407-sda,并尝试了相同的命令,但始终得到:

    Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
    
    在将我的用户名从ec2用户更改为fedora后,它工作了

    ssh -i mypemfile.pem fedora@myec2address
    

    我建议不要像其他一些答案所建议的那样设置密码。使用密钥文件不仅更安全(没有人能猜到您的密码),而且更方便(一旦您设置了配置文件)。下面是一个基本的
    ~/.ssh/config

    Host my-ec2-server
      HostName 11.11.11.11
      User ec2-user
      IdentityFile /path/to/generated-key.pem
    
    现在您只需键入
    ssh my-ec2-server
    就可以了!正如其他答案中提到的,当您的连接不工作时,使用-v可以获取额外信息。

    +1


    我注意到,对于一些AMI,比如AmazonLinux,ec2-user@xxx.XX.XX.XXX会有用的。但是对于ubuntu图像,我不得不使用ubuntu@来代替。.pem从来都不是问题,只是用户名问题。

    我也遇到过这个问题。我发现发生了这种情况,因为我忘了在主机名之前添加用户名: 像这样:

    ssh -i test.pem ec2-32-122-42-91.us-west-2.compute.amazonaws.com
    
    我添加了用户名:

    ssh -i test.pem ec2-user@ec2-32-122-42-91.us-west-2.compute.amazonaws.com
    

    它起作用了

    如果问题是一致的,并且即使在将文件权限更改为400或600之后,问题也会连续发生10-15次,那么ec2实例上肯定出了问题,因此要确保:

  • 当您试图通过在末尾添加-v来ssh到实例时,请检查日志,看看它是否给出了任何特定的消息

  • 确保使用正确的ssh名称,如Ubuntu。也许这取决于Linux发行版和您添加的用户,或者您已经为“ro”授予了权限