复制到EC2时权限被拒绝(公钥)错误

时间:2019-08-24 07:02:45

标签: amazon-web-services ubuntu ssh ubuntu-16.04 scp

我正在尝试将本地文件复制到AWS EC1或EC2。

我的详细设置。

  1. 创建了两个EC2实例。

  2. 从AWS领事处获取.pem文件(私钥)。

  3. 从.pem文件生成的私钥(步骤2)。

  4. 能够使用步骤3中生成的私钥连接EC1和EC2。

  5. 通过复制EC1和EC2服务器中的.pem文件,可以在EC1和2 aws服务器之间复制文件。

现在,我要将文件从本地计算机复制到AWS EC1和EC2服务。

但是在尝试执行以下命令时(使用公共DNS):

    var moves, result;

    moves = {
        rock: 0, 
        paper: 1, 
        scissors: 2,
    };

    result = {
        win: 0,
        tie: 0,
        lose: 0
    };

    function convertMoves() {
        playerSelection = prompt('Please choose rock, paper, or scissors').toLowerCase();
        return moves[playerSelection];
    }

    function computerPlay() {
        var movesValues = Object.values(moves);
        var r = Math.random()
        var random = Math.floor(r * movesValues.length);
        //console.log(r,movesValues.length,random)
        return movesValues[random];
    } 

    function playRound() {

        // call the *choice* functions
        var c = computerPlay()
        var p = convertMoves()
        console.log(c,p) // *** debugging ***

        var processResult = (3 + c - p) % 3;

        if (!processResult) {
            ++result.tie;
            console.log('tie');
        } else if (1 == processResult) {
            ++result.lose;
            console.log('You lost');
        } else {
            ++result.win;
            console.log('You won');
        }

        return function() {
            var rounds = 0;
            var resultValues = Object.values(result);

            for (var i = 0; i < resultValues.length; i++) {
                rounds += resultValues[i];
            }

            console.log("rounds:",rounds)
            if (rounds !== 5) {
                playRound()(); // *** recursion ***
            }

            return result;
        }
    }

    console.log(playRound()());

遇到错误

  

权限被拒绝(公钥)

当我使用私有DNS时:

ssh ubuntu@ec2-18-222-170-204.us-east-2.compute.amazonaws.com 

得到以下错误:

  

ssh:无法解析主机名ip-172-31-43-162.us-east-2.compute.internal:名称或服务未知

我应该怎么做才能解决此问题或使其正常工作?

输出

ssh ubuntu@ip-172-31-43-162.us-east-2.compute.internal

1 个答案:

答案 0 :(得分:-1)

第一件事,ssh ubuntu@ip-172-31-43-162.us-east-2.compute.internal仅在 VPC 内有效,因为它的私有IP ,在您连接之前,本地系统将永远无法解析此DNS通过该VPC的某些VPN。

这不是安全组问题,您的实例可以访问。

您应该发布ssh ubuntu@ec2-18-222-170-204.us-east-2.compute.amazonaws.com的调试日志,您可以使用ssh -v ubuntu@ec2-18-222-170-204.us-east-2.compute.amazonaws.com来获取调试日志

但是我确定它不是从正确的位置选择pem文件。两种可能的原因

  1. 设置chmod 400 your.pem,然后尝试连接
  2. 在ssh命令中指定密钥

    ssh -i path_to_key/private.pem ubuntu@ec2-18-222-170-204.us-east-2.compute.amazonaws.com

  3. 在这种情况下,用户ubuntu可能不存在,您可以尝试以root身份使用,AWS会将可以ssh的用户返回到该服务器。

您还可以获取AWS ec2 console的ssh命令。 ->选择实例,然后单击连接,复制命令并尝试连接。