Azure 经典模式中虚拟机证书指纹的生成和作用
用户在使用经典虚拟机时,经常会有如下疑问:门户主板页面中的 SSH/RDP 证书指纹这项信息是怎么来的?用途是什么?为什么有的时候为空?有没有对虚拟机使用有什么影响?以下我们进行一些基本的介绍:
证书指纹的用途
证书是 Windows/Linux 远程连接时使用的为验证虚拟机身份的证书。对于 Linux 来讲,即为 SSH 配置的证书;对于 Windows 来讲,即为 RDP 配置的证书。指纹是根据证书生成的唯一识别证书的标识。
用户在通过 RDP 或者 Putty 等 SSH 工具第一次远程访问虚拟机时,该工具会获取到远程服务器的证书指纹,并弹出一个窗口询问是否确认这台虚拟机就是你要访问的。通过对比指纹,能够识别远程访问的主机就是您在 Azure 中创建的虚拟机,避免连接或者管理上的错误。
指纹的生成
细心的用户会发现,如果通过标准镜像或者一般化镜像创建的虚拟机,门户中会显示指纹;而通过磁盘或者未一般化的镜像创建的虚拟机,指纹会显示为空。
指纹信息是在分配系统(provisioning)的过程中,由虚拟机上的代理获取并发送给 Azure Fabric。Fabric 获取到该信息后,显示到门户中。
我们通过下面情况来看看 Linux 中该证书指纹的使用和产生过程:
Linux
从发布镜像创建的虚拟机
门户中信息显示:
![]()
使用 putty 第一次 SSH 登录时的提示:
![]()
虚拟机系统中 Key 的位置 /etc/ssh/ 以及 fingerprint:
![]()
结论:这三个地方的指纹是完全匹配的。
再来看看虚拟机的日志中相关的记录。
/var/log/message 中记录了虚拟机开机后,生成 host key 的日志。/var/log/waagent.log 中也记录了config SSH 的日志。说明创建虚拟机的过程包含了配置证书这个步骤。
/var/log/message:
Mar 9 05:28:13 localhost sshd-keygen: Generating SSH2 RSA host key: [ OK ]
Mar 9 05:28:13 localhost sshd-keygen: Generating SSH2 ECDSA host key: [ OK ]
Mar 9 05:28:13 localhost sshd-keygen: Generating SSH2 ED25519 host key: [ OK ]
Mar 9 05:28:13 localhost systemd: Started OpenSSH Server Key Generation.
Mar 9 05:28:37 localhost python: 2017/03/09 05:28:37.865062 INFO Create user account if not exists
Mar 9 05:28:39 localhost python: 2017/03/09 05:28:39.056154 INFO Set user password.
Mar 9 05:28:39 localhost python: 2017/03/09 05:28:39.414142 INFO Configure sudoer
Mar 9 05:28:39 localhost python: 2017/03/09 05:28:39.441285 INFO Configure sshd
Mar 9 05:28:39 localhost python: 2017/03/09 05:28:39.445257 INFO Enabled SSH password-based authentication methods.
Mar 9 05:28:39 localhost python: 2017/03/09 05:28:39.449218 INFO Configured SSH client probing to keep connections alive.
Mar 9 05:28:39 localhost systemd: Time has been changed
Mar 9 05:28:39 localhost systemd: Stopping OpenSSH server daemon...
Mar 9 05:28:39 localhost systemd: Stopping OpenSSH Server Key Generation...
Mar 9 05:28:39 localhost systemd: Starting OpenSSH Server Key Generation...
Mar 9 05:28:39 localhost sshd-keygen: Generating SSH2 ECDSA host key: [ OK ]
Mar 9 05:28:39 localhost sshd-keygen: Generating SSH2 ED25519 host key: [ OK ]
Mar 9 05:28:39 localhost systemd: Started OpenSSH Server Key Generation.
Mar 9 05:28:39 localhost systemd: Started OpenSSH server daemon.
Mar 9 05:28:39 localhost systemd: Starting OpenSSH server daemon...
/var/log/waagent.log :
2017/03/09 05:28:37.865062 INFO Create user account if not exists
2017/03/09 05:28:39.056154 INFO Set user password.
2017/03/09 05:28:39.414142 INFO Configure sudoer
2017/03/09 05:28:39.441285 INFO Configure sshd
2017/03/09 05:28:39.445257 INFO Enabled SSH password-based authentication methods.
2017/03/09 05:28:39.449218 INFO Configured SSH client probing to keep connections alive.
2017/03/09 05:28:39.906654 INFO Event: name=WALA, op=Provision, message=Provision succeed
2017/03/09 05:28:41.818551 INFO Provisioning complete
捕获的 Specialized 镜像
大家会发现,specialized 的镜像在创建VM的过程中不会要求指定用户名、密码等信息,是因为虚拟机会使用原有磁盘和系统中的信息,而不需要重新生成,即不会有 provisioning 的部分过程。
![]()
![]()
![]()
创建后,虚拟机在门户中的显示:
![]()
第一次 SSH 登录时的提示:
这里的镜像是第一个实验中在线捕获的虚拟机,其使用了和原有系统一样的证书,因此,指纹也是一样的。
![]()
系统日志中提示 provisioning 会被忽略,使用已有的配置。
/var/log/waagent.log中也一样。
/var/log/waagent.log
2017/03/09 06:25:43.786494 INFO Resource disk /dev/sdb is mounted at /mnt/resource with ext4
2017/03/09 06:25:43.797982 INFO Clean protocol
2017/03/09 06:25:43.809387 INFO Provisioning already completed, skipping.
Windows
我们再来看看 Windows 中相关的信息存放在哪里:
门户中信息:
![]()
RDP连接信息:
![]()
Windows 中 Remote Desktop 的信息:
CMD 窗口中输入 mmc | File | Add/Remove Snapshot in | Certificate(Local Computer) | Computer 打开证书管理面板;点击 Remote Desktop | Certificate,双击证书查看 Details 中的 Thumbprint。
![]()
指纹为何为空?
前面提到,该信息是在 VM provisioning 过程中发送给 Azure Fabric 的。而通过磁盘或者为一般化的镜像创建的虚拟机,默认是没有分配系统(Provisioning)这个阶段的,因此,fabric 无法获得这个信息,当然就无法显示。
由于这是个仅运行一次的服务,如果创建好的虚拟机,在运行过程中变更了证书,那这里的指纹和证书实际的指纹很可能对应不上,请管理员注意。
有没有对虚拟机使用有什么影响?
该指纹的显示,能在一定程度上帮助客户识别虚拟机的身份。但对虚拟机本身的使用,不会有影响,但建议管理员和用户需要有较高的安全意识,对云上虚拟机进行合理的管理,避免因通过未一般化镜像创建了身份和密码都一样的虚拟机,造成管理上的混乱。
Azure 经典模式中虚拟机证书指纹的生成和作用的更多相关文章
- 微软Azure 经典模式下创建内部负载均衡(ILB)
微软Azure 经典模式下创建内部负载均衡(ILB) 使用之前一定要注意自己的Azure的模式,老版的为cloud service模式,新版为ARM模式(资源组模式) 本文适用于cloud servi ...
- Windows Azure 虚拟网络中虚拟机的网络隔离选项
最近我们发布了一份<Windows网络安全白皮书>(单击此处下载),文中深入说明了客户可以如何利用该平台的本地功能,为他们的信息资产提供最好的保护. 由首席顾问Walter Myer ...
- 如何扩展 Azure 资源组中虚拟机的 OS 驱动器
概述 在资源组中通过从 Azure 应用商店部署映像来创建新的虚拟机 (VM) 时,默认的 OS 驱动器空间为 127 GB. 尽管可以将数据磁盘添加到 VM(数量取决于所选择的 SKU),并且我们建 ...
- IIS 7 托管管道模式 经典模式(Classic) 集成模式(Integrated) 分析与理解
IIS 7.0 支持两种管道模式:一种是IIS 7.0最新提供的集成管道模式,另一种是经典管道模式,经典管道模式是由先前版本的IIS提供的. 我们可以通过应用程序池设置管道模式,这项功能对IIS管理员 ...
- 通过 Powershell 来替换 ARM 模式下虚拟机的网络接口
需求描述 客户在部署完 ARM 模式的虚拟机以后,由于误操作在虚拟机内部禁用了网卡导致远程访问虚拟机受到限制,以下是通过 Powershell 命令来替换原有虚拟网络接口实现虚拟网卡重置功能. Not ...
- 通过 Powershell 来调整 ARM 模式下虚拟机的尺寸
需求描述 在部署完 ARM 模式的虚拟机以后,可以通过 PowerShell 命令来调整虚拟机的尺寸,以下是通过 PowerShell 命令来调整 ARM 模式的虚拟机尺寸. Note 本文只限于 A ...
- 【虚拟机-部署】通过 Powershell 来调整 ARM 模式下虚拟机的尺寸
需求描述 在部署完 ARM 模式的虚拟机以后,可以通过 PowerShell 命令来调整虚拟机的尺寸,以下是通过 PowerShell 命令来调整 ARM 模式的虚拟机尺寸. Note 本文只限于 A ...
- 【转载】IIS7.5(经典模式)访问静态资源(.css和.js文件)提示:未能执行 URL
IIS7.5(经典模式)静态资源(.css和.js文件)提示:未能执行 URL “/”应用程序中的服务器错误. 未能执行 URL. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪 ...
- ASP.NET运行时详解 集成模式和经典模式
遗留问题 在<ASP.NET运行时详解 生命周期入口分析>中遗留两个问题,包括Application的InitInternal方法执行细节.IIS6和II7经典模式请求管道管理类Appli ...
随机推荐
- (转)DB2性能优化 – 如何通过调整锁参数优化锁升级
原文:http://blog.51cto.com/5063935/2074306 1.概念描述 所谓的锁升级(lock escalation),是数据库的一种作用机制,为了节约内存的开销, 其会将为数 ...
- Linux系统编程:socket网络编程(操作篇)
一.问题思考 问1.网络通信应用在什么场合?通信的前提是什么? 答1.主要应用在不同主机进程间的互相通信,同一主机的进程也可以使用网络进行通信.通信的前提是如何标识通信进程的唯一,由于不同主机的进程极 ...
- WPF 自定义ScrollViwer
ScrollViewer自定义样式 ScrollViewer在各种列表.集合控件中广泛使用的基础组建,先看看效果图: 如上图,ScrollViewer简单来说分两部分,一个横向的滚动条,一个垂直滚动条 ...
- PTA (Advanced Level) 1018 Public Bike Management
Public Bike Management There is a public bike service in Hangzhou City which provides great convenie ...
- mysql在查询结果列表前添加一列递增的序号列(最简)
SELECT @rownum:=@rownum+1 AS 序号, t_user.* FROM t_user ,(SELECT @rownum:=0) r -- 最简写法1 更多写法供参考: ① ...
- 记录一次nginx502/504问题解决过程
最近自己在阿里云购买有段时间的服务器,一访问就出现nginx 504 Gateway Time-out. 想起以前是可以访问的,细想最近改动的配置应该不会涉及到这块啊. 就网上各种百度谷歌,最后终于找 ...
- Oracle执行计划的查看
前言 一个系统在刚开始的时候,由于数据库中数据量不大,开发人员的主要精力都在业务与功能实现上.系统完成部署上线后随着时间的累积,每个表中的数据都在不断增长,我们往往会发现系统越来越慢,这可能是程序设计 ...
- 如何将本地文件通过终端上传到linux服务器或从linux主机下载文件到本地
第一种方式: SecureCRT下上传文件只需在shell终端仿真器中输入命令“rz”,即可从弹出的对话框中选择本地磁盘上的文件,利用Zmodem上传到服务器当前路径下.下载文件只需在shell终端仿 ...
- Java jxl导入excel文件,导入的数字、身份证号码、手机号变成了科学计数法,解决方案
原文出自:https://blog.csdn.net/seesun2012 这是一个execl文件导入数据库操作,使用jxl解析execl导入数据库过程出现了科学计数法,与想要导入的数据不匹配,以下是 ...
- 基于asp.net mvc的近乎产品开发培训课程(第一讲)
演示产品源码下载地址:http://www.jinhusns.com/Products/Download