我已经通过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上,我有一个公共密钥和一个私有密钥。
答案 0 :(得分:1)
对于您的问题,我认为可能有两个原因,也许您已经解决了问题,但这应该是最后的方法。
以下是可能的原因和解决方案:
解决方案::您需要将SSH密钥从terraform文件复制到主机中的 if (user.equals("admin")){
int rowInserted = preparedStatement.executeUpdate();
}
文件中(因为您是云外壳)。
解决方案:您需要创建一个新的SSH密钥,然后像以前一样使用新密钥重置VM SSH公共密钥。
答案 1 :(得分:0)
我使用了它并传递了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]]