Ning
Kuang
WSSC WS ARD高级项目经理

您是否曾经因为忘记
Azure VM 密码或 SSH密钥而导致无法访问
VM?VMAccess扩展程序使您可以重置密码、SSH密钥或
SSH配置,以便重新获得访问权限。

此扩展程序针对
Linux VM。对于 Windows VM,请单击此处获取详细信息。

如果这是您第一次使用
VM 扩展程序,您可以查阅此处获取背景信息。

先决条件

  • 微软 Azure Linux 代理 2.0.5 或更高版本。请注意,大多数 Azure 虚拟机 Linux 镜像库都包含 2.0.5 版本。您可以通过运行 waagent -version 来确认此版本已安装在虚拟机中。为保证扩展程序最佳用户体验,建议按照本文结尾“其他注意事项”中的步骤更新到最新版本。
  • Azure PowerShell。请注意,针对扩展程序的跨平台
    CLI
    支持有望在未来几周内推出。
  • 您想要对您的 VM 重置的新密码或 SSH 密钥。

    使用 VMAccess扩展程序

    根据您想要为
    VM 重置的内容,VMAccess的使用有
    5种场景。以下将介绍这些场景和对应的 PowerShell示例脚本。请注意,您只需为每种场景指定不同的参数,“开始执行”这行注释之后的第二部分在不同场景中均相同。脚本非常简单。

    1.仅重置密码

    <strong><span style="font-size:14px;">#用于重置密码的示例脚本
    #指定虚拟机
    $vm = Get-AzureVM -ServiceName ‘MyServiceName’ -Name ‘MyVMName’
    #输入您当前的用户名和新密码
    $UserName = "CurrentName"
    $Password = "NewPassword"
    $PrivateConfig = '{"username":"'+ $UserName + '", "password":"' + $Password + '”}' #开始执行
    $ExtensionName = 'VMAccessForLinux'
    $Publisher = 'Microsoft.OSTCExtensions'
    $Version = '1.0'
    Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $Version -PrivateConfiguration $PrivateConfig | Update-AzureVM
    </span></strong>

    2.仅重置
    SSH密钥

    <strong><span style="font-size:14px;">#用于重置 SSH 密钥的示例脚本
    #指定虚拟机
    $vm = Get-AzureVM -ServiceName ‘MyServiceName’ -Name ‘MyVMName’
    #输入当前用户名和您的新公共 SSH 密钥的路径
    $UserName = "CurrentName"
    $cert = Get-Content "CertPath"
    $PrivateConfig = '{"username":"'+ $UserName + '", "ssh_key":"'+ $cert + '"}' #开始执行
    $ExtensionName = 'VMAccessForLinux'
    $Publisher = 'Microsoft.OSTCExtensions'
    $Version = '1.0'
    Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $Version -PrivateConfiguration $PrivateConfig | Update-AzureVM
    </span></strong>

    3.重置密码和
    SSH密钥

    <strong><span style="font-size:14px;">#用于重置密码和 SSH 密钥的示例脚本
    #指定虚拟机
    $vm = Get-AzureVM -ServiceName ‘MyServiceName’ -Name ‘MyVMName’
    #输入新密码、新 SSH 公共密钥的证书路径以及当前用户名
    $UserName = "CurrentName"
    $Password = "NewPassword"
    $cert = Get-Content "CertPath"
    $PrivateConfig = '{"username":"'+ $UserName + '", "password":"' + $Password + '", "ssh_key":"'+ $cert + '"}' #开始执行
    $ExtensionName = 'VMAccessForLinux'
    $Publisher = 'Microsoft.OSTCExtensions'
    $Version = '1.0'
    Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $Version -PrivateConfiguration $PrivateConfig | Update-AzureVM
    </span></strong>

    4.创建新的
    sudo用户帐户

    如果您忘记用户名,可以使用
    VMAccess 创建一个具有 sudo权限的新用户名。请注意,在这种情况下,您的原始用户名和登录密钥不会被修改,它们应该仍然有效。

    要创建具有密码访问权限的新
    sudo 用户,请使用场景 1中的脚本;要创建具有
    SSH密钥访问权限的新 sudo用户,请使用场景
    2中的脚本;您也可以使用场景 3来创建具有两种访问权限的新用户;记住您需要将“UserName”更改为新的用户名。

    5.重置
    SSH配置

    如果
    SSH 配置混乱,您也可能会失去对 VM的访问权限。您可以使用
    VMAccess扩展程序将配置重置为默认配置。要执行此操作,您只需使用下面的示例脚本。扩展程序会重新启动 SSH服务器,打开
    VM上的 SSH端口,将
    SSH配置重置为默认配置。您的 VM的用户帐户(密码或
    SSH密钥)保持不变。

    请注意,被重置的
    SSH 配置文件位于 /etc/ssh/sshd_config。

    <span style="font-size:14px;">#用于重置 VM 上的 SSH 配置的示例脚本
    #指定虚拟机
    $vm = Get-AzureVM -ServiceName ‘MyServiceName’ -Name ‘MyVMName’
    $PrivateConfig = '{"reset_ssh":"True"}' #开始执行
    $ExtensionName = 'VMAccessForLinux'
    $Publisher = 'Microsoft.OSTCExtensions'
    $Version = '1.0'
    Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $Version -PrivateConfiguration $PrivateConfig | Update-AzureVM
    </span>

    查询结果

    可以使用
    Azure PowerShell Cmdlet “Get-AzureVM” 或“Get-Deployment”检索
    VMAccess扩展程序的状态。

    重置后访问
    VM

    VMAccess扩展程序重置凭据和配置后,您可以使用新的帐户名、密码或
    SSH密钥登录到虚拟机。

    其他注意事项

    • 请注意,如果只想重置现有用户帐户的密码或 SSH密钥,则需要确保输入的用户名与原始用户名匹配。如果您输入的名称与原始用户名不一致,VMAccess扩展程序会判定为场景
      4并创建新的用户帐户.

    • 更新到WALA 2.0.8的方法

    1.  为waagent文件添加“可执行”的权限#
      chmod +x waagent
    2. 替换
      /usr/sbin/目录下的waagent文件#
      cp waagent /usr/sbin
    3. 重启waagent服务

    # service waagent restart

    (如果你使用的是Ubuntu,需要将上述命令中的“waagent”替换为“walinuxagent”)

    注意:1.如需要更新到其他版本,请参看GitHub说明。2.运行以上命令需要Root权限。

    本文翻译自:http://azure.microsoft.com/blog/2014/08/25/using-vmaccess-extension-to-reset-login-credentials-for-linux-vm/

    
    
  • 使用 VMAccess 扩展程序重置 Linux 虚拟机的登录凭据的更多相关文章

    1. 使用 CustomScript 扩展程序自动执行 Linux 虚拟机自定义任务

      NingKuangWSSC WS ARD 高级项目经理 您可能已经从Windows扩展程序博客中了解了针对 Windows 虚拟机的 CustomScript扩展程序,现在的好消息是,这一扩展程序也已 ...

    2. linux虚拟机磁盘扩展与分区大小调整

      有段时间觉得linux虚拟机上的磁盘不太够用,研究了下其磁盘扩展 1.linux虚拟机磁盘扩展 step1. 先关机在编辑虚拟机中,找到硬盘选项增加空间,进行扩展step2. 进入root fdisk ...

    3. 如何在 Azure 中均衡 Linux 虚拟机负载以创建高可用性应用程序

      负载均衡通过将传入请求分布到多个虚拟机来提供更高级别的可用性. 本教程介绍了 Azure 负载均衡器的不同组件,这些组件用于分发流量和提供高可用性. 你将学习如何执行以下操作: 创建 Azure 负载 ...

    4. 20175215 2018-2019-2 第一周Linux虚拟机环境调试及java程序调试学习总结

      一.Linux虚拟机的java环境调试 之前直接在终端中使用export直接配置java的运行环境,导致每次终端被重启的时候都要重新配置java的运行环境,直到看到老师的博客Intellj IDEA ...

    5. Linux虚拟机扩展磁盘

      Linux虚拟机扩展磁盘 1.虚拟机关机,Vmware中扩展磁盘 2.虚拟机开机,查看磁盘大小 [root@hadoop6 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmp ...

    6. VM Agent 和扩展程序

      VM Agent 和扩展程序 - 第 1 部分  Windows Azure基础结构服务最近宣布了一项新功能VM Agent.VMAgent是一个轻量级进程,用于启动由Microsoft或合作伙伴 ...

    7. 阿里云至 Windows Azure 的 Linux 虚拟机迁移

      在Windows Azure中,用户可以对部署在Azure中的虚拟机的映像.磁盘以及快照进行生成和下载.用户可以方便地将Azure中的虚拟机实例迁移到本地.私有云甚至其他公有云平台进行测试.扩展或者再 ...

    8. linux虚拟机下解压文件

      pscp命令上传文件到linux虚拟机   项目开发过程中,经常需要从windows向linux服务器上传下载文件.下面简单介绍一下如何上传下载文件. 下载安装putty软件:https://pan. ...

    9. Windows下Linux虚拟机的配置以及Win10 linux子系统开启

      本文所用资料下载地址为: 链接:链接:https://pan.baidu.com/s/1iiI2ebAnomKrBpvSg05w2A 提取码:7giz 复制这段内容后打开百度网盘手机App,操作更方便 ...

    随机推荐

    1. Protocol buffer序列化及其在微信蓝牙协议中的应用

      Protocol buffer是Google出品的一种轻便高效的结构化数据存储格式,可对结构化数据进行序列化,并具有语言无关.平台无关等特点,在通信协议和数据存储等领域已经得到广泛的应用.目前其已经提 ...

    2. [转] Form表单中method="post/get'的区别

      Form提供了两种数据传输的方式——get和post.虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响.虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一 ...

    3. 利用System V消息队列实现回射客户/服务器

      一.介绍 在学习UNIX网络编程 卷1时,我们当时可以利用Socket套接字来实现回射客户/服务器程序,但是Socket编程是存在一些不足的,例如: 1. 服务器必须启动之时,客户端才能连上服务端,并 ...

    4. Android(java)学习笔记242:多媒体之设置全屏的方法

      在实际的应用程序开发中,我们有时需要把 Activity 设置成全屏显示,一般情况下,可以通过两种方式来设置全屏显示效果.其一,通过在代码中可以设置,其二,通过manifest配置文件来设置全屏. 其 ...

    5. python实现登录函数,比较简单

      一个简单的python实现登录以及修改密码的函数 #密码错误3次,锁定登录: password_list = ['] def account_login(): Tries = 3 while Trie ...

    6. C#中的操作数据库的SQLHelper类

      using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...

    7. 如何做高大上的网站布局 -------------------->>转至(卧牛SEO/武汉SEO http://blog.sina.com.cn/zhengkangseo )

      SEO开始做,最重要的是网站布局,一个网站布局决定了用户在网站的停留时间,在网站中放入用户想要的内容之外,更重要的是要让用户看到网站之后,一目了然,视觉和感官上良好的体验.那新手该如何做网站布局呢? ...

    8. css标签选择器

      /*标签选择器*/ input[type="text"] { width: 60%; } </style>

    9. (Excel导出失败)检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失

      在DCOM 中不存在WORD.EXCEL等OFFICE组件   最近在做一个关于office转存PDF的Web项目.开发过程一切顺利. 起初在网上找到一些Word,PPT转PDF的代码.很好用.一切顺 ...

    10. (转)dedecms [field:array runphp='yes']标签使用技巧

      field支持用array获取任意字段的值:(支持标记:文章内容模板的 {dede:field name=’array’ /}.arclist.arclistsg.loop.sql 标签) 我们平时常 ...