Azure无法访问VM

时间:2019-09-09 09:21:44

标签: azure virtual-machine

我已经通过terraform创建了VM,但是无法从https://shell.azure.com/

访问它

当我键入:

ssh azureuser@40.IP.IP.IP

我得到:

Permission denied (publickey).

从terraform脚本中,我知道此VM是使用以下方式创建的:

os_profile {
    computer_name  = "myvm"
    admin_username = "azureuser"
}

os_profile_linux_config {
    disable_password_authentication = true
    ssh_keys {
        path     = "/home/azureuser/.ssh/authorized_keys"
        key_data = "ssh-rsa AAAAB3Nz(...)"
    }
}
output "public_ip_address" {
    value = azurerm_public_ip.myterraformpublicip.ip_address
}

如何访问我的VM?我知道它是IP,管理员用户,但无法访问它。

/home/user/.ssh的Azure上,我有一个公共密钥和一个私有密钥。

3 个答案:

答案 0 :(得分:1)

对于您的问题,我认为可能有两个原因,也许您已经解决了问题,但这应该是最后的方法。

以下是可能的原因和解决方案:

  1. SSH密钥与您用来在主机中创建VM的SSH密钥不同,该主机是您要从中SSH到VM的主机(因为您是云外壳)。

解决方案::您需要将SSH密钥从terraform文件复制到主机中的 if (user.equals("admin")){ int rowInserted = preparedStatement.executeUpdate(); } 文件中(因为您是云外壳)。

  1. SSH密钥的格式不正确,这意味着它是错误的密钥。

解决方案:您需要创建一个新的SSH密钥,然后像以前一样使用新密钥重置VM SSH公共密钥。

答案 1 :(得分:0)

Azure具有用于更改ssh密钥或密码的选项: enter image description here

我使用了它并传递了https://shell.azure.com/上生成的密钥 使用命令:

ssh-keygen -t rsa -b 2048

然后命令:

ssh azureuser@40.IP.IP.IP 

工作正常。

公钥/home/user/.ssh/id_rsa.pub必须与VM中的相同。

答案 2 :(得分:0)

请尝试使用以下命令,该命令明确指定要使用的密钥。 link

byte[] myBytes1 = {0,1,2,3,4};
byte[] myBytes2 = {5,6,7,8,9};

List<byte[]> imageResults = new ArrayList<>();
imageResults.add(myBytes1);
imageResults.add(myBytes2);

byte[][] images = new byte[imageResults.size()][];
for (int i = 0; i < imageResults.size(); i++){
  images[i] = imageResults.get(i);
}

// alternative to the loop:
// IntStream.range(0, imageResults.size()).forEach(i -> images[i] = imageResults.get(i));

System.out.println(Arrays.deepToString(images));

// prints:
// [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]