【虚拟机-远程连接】Azure Linux 虚拟机常见导致无法远程的操作
对Azure虚拟机的一些操作可能会导致无法远程连接,本文罗列了以下导致不能远程连接的场景:
- 场景1 - 在虚拟机配置IP地址或MAC地址
- 场景2 - 错误地修改服务的配置文件
- 场景3 - 误设置防火墙规则
- 场景4 - 挂载UUID相同的系统盘
- 场景5 - 使用device名称挂载软raid的device,名称发生变化引起启动失败
场景1
在配置文件(/etc/sysconfig/network-scripts/ifcfg-eth0)中配置固定的IP地址或MAC地址:
DHCP_HOSTNAME=DanCentOS65
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.36
NETMASK=255.255.255.224
GATEWAY=10.0.0.33
HWADDR=00:0C:29:13:5D:74
TYPE=Ethernet
USERCTL=no
PEERDNS=yes
IPV6INIT=no
修改后,在界面上关机后再开机,虚拟机会无法ssh登陆。(针对固定IP的情况,如果配置文件中写入的IP与虚拟机启动后DHCP获取到的IP恰巧一致,这种情况下可以链接,但是如果再次重启的时候,DHCP获取到的IP可能会变化,所以仍然存在风险)
注:本场景测试环境为CentOS 6.5, 如果您当前使用的非该版本, 请注意版本的差异性。
场景2
错误地修改服务的配置文件/etc/ssh/sshd_config(语法错误或者配置错误),导致sshd服务无法启动失败:
由于针对该文件的修改方法多种多样,所以这里只举例说明,例如我们在修改sshd配置文件的时候,在某一行手误多输入了一个字母:

结果sshd服务就无法正常启动了:

注:本场景测试环境为CentOS 6.5, 如果您当前使用的非该版本, 请注意版本的差异性。
场景3
错误地配置了虚拟机的防火墙(firewalld),iptables等等: 出于安全角度考虑,很多用户会针对ssh的客户端ip进行限制,或者配置其他安全策略,这种情况下,如果出现配置不当或者错误配置,会导致客户端不能正常ssh连接。 关于iptables的使用说明,请阅读这篇文章 关于firewalld的使用说明,请阅读这篇文章
场景4
同一个版本的Linux映像创建出来的虚拟机的系统盘UUID相同,例如使用平台映像创建两台CentOS6.5的虚拟机,系统盘UUID都为8fc4d768-29cd-462c-a7ab-5bf4bcfa9fa2:


因此如果将虚拟机的系统盘挂载到用相同平台映像创建其他机器上作为数据盘,不要使用UUID挂载(可以使用device名称来挂载),否则可能因为UUID相同导致挂载错误的系统盘引起启动失败,导致无法连接(如果这种情况发生,分离磁盘可能会将正常的系统盘分离下来)。
注:本场景测试环境为CentOS 6.5, 如果您当前使用的非该版本, 请注意版本的差异性。
场景5
虚拟机做软raid后,使用device名称挂载而非UUID挂载,重启后软raid的device名称发生变化,导致无法正常挂载,虚拟机启动失败从而无法正常ssh: 例如,在创建raid的时候,使用md0,md1,md2作为名称进行创建(参考链接):
mdadm --create /dev/md0 --level 0 --raid-devices 2 /dev/sdc1 /dev/sdd1
mdadm --create /dev/md1 --level 0 --raid-devices 2 /dev/sde1 /dev/sdf1
mdadm --create /dev/md2 --level 0 --raid-devices 2 /dev/md0 /dev/md1
创建完成后,如果虚拟机重启,device名称会发生变化,从127开始向前递减:

如果在fstab文件中使用device名称进行挂载,会导致重启后,系统找不到/dev/md0,/dev/md1,/dev/md2,从而挂载失败无法启动。所以建议使用UUID进行挂载。
注:本场景测试环境为CentOS 6.5, 如果您当前使用的非该版本, 请注意版本的差异性。
【虚拟机-远程连接】Azure Linux 虚拟机常见导致无法远程的操作的更多相关文章
- 远程连接Kali Linux使用PuTTY实现SSH远程连接
远程连接Kali Linux使用PuTTY实现SSH远程连接 本书主要以在Android设备上安装的Kali Linux操作系统为主,介绍基于Bash Shell渗透测试.由于在默认情况下,在Andr ...
- 通过xrdp实现远程桌面连接Windows Azure linux虚拟机
本文以Oracle Linux 6.4虚拟机为示例(22及3389端口必须打开,分别用于SSH及RDP连接) 1.在安装xrdp之前,首先需要安装一些必要的包,如: # yum -y install ...
- Windows Azure Virtual Machine (25) 使用SSH登录Azure Linux虚拟机
<Windows Azure Platform 系列文章目录> 本文介绍内容适合于Azure Global和Azure China 为什么使用SSH登录Azure Linux虚拟机? 我们 ...
- 超大文件上传到Azure Linux虚拟机最佳实践
客户在实际进行迁移的时候,往往碰到需要将本地数据中心的超大文件,比如单个200GB的文件,或者总共1TB的无数文件上传到Azure上的情况,尤其是传到Azure的Linux虚拟机的场景,这种场景包括: ...
- JMC监控(Windows上远程连接监控Linux服务器的JVM)
Windows上远程连接监控Linux服务器的JVM:1.Linux服务器上配置:在Tomcat的tomcat-wms/bin/catalina.sh中添加CATALINA_OPTS="-X ...
- 其他综合-使用Xshell远程连接管理Linux实践
使用Xshell远程连接管理Linux实践 1. Xshell整体优化 1)点击 工具 ,然后选择 选项 2)在 常规 选项中,下面的存放路径根据个人爱好修改(可选默认) 3)在 更新 选项中,将 √ ...
- 其它综合-使用Putty远程连接管理Linux实践
使用Putty远程连接管理Linux实践 1.获取putty 获取 putty有很多方法,以下是我为大家提供的下载地址: 个人网盘地址,提取码:tz83 官方下载地址 解释: 官方下载的是 zip 压 ...
- Azure Linux 虚拟机常见导致无法远程的操作
对Azure虚拟机的一些操作可能会导致无法远程连接,本文罗列了以下导致不能远程连接的场景: 场景1 - 在虚拟机配置IP地址或MAC地址 场景2 - 错误地修改服务的配置文件 场景3 - 误设置防火墙 ...
- 【虚拟机-远程链接】Azure Windows 虚拟机常见导致无法远程的操作
对Azure虚拟机的一些操作可能会导致无法远程连接,本文罗列了以下导致不能远程连接的场景: 场景1 - 在虚拟机网卡配置中配置IP地址或MAC地址 场景2 - 远程桌面授权过期 场景3 - 误设置“不 ...
随机推荐
- CCD与CMOS的区别?
我们在购买相机或是摄像机时,都会看到使用CMOS镜头或是CCD镜头,那么CCD与CMOS是什么意思呢,CCD与CMOS的区别是什么?首先,让我们了解CCD与CMOS的意思. CCDCCD使用一种高感光 ...
- MD04
MD04执行MRP分析后, 将计划订单转换为采购申请单后,,如图所示 采购申请转为采购订单后,如图所示 采购订单生成后,MMBE查看库存 MIGO进行收货后,如下图 此物料在SO中已经收货,已有库存
- win7+64位+Oracle+11g+64位下使用P…
1)安装Oracle 11g 64位 2)安装32位的Oracle客户端( instantclient-basic-win32-11.2.0.1.0) 下载instantclient-basi ...
- webbrowser 控件实现WinForm与WebForm交互
WebBrowser 控件可以让你装载Windows Form 应用程序中的 Web 网页和其它采用浏览器的文件.可以使用webbrowser 控件将现有的web框架控制项加入至 Windows Fo ...
- 简单的GTK窗体搭建
#include<gtk/gtk.h> //必须引用gtk/gtk.h这个头文件 2 int main(int argc,char *argv[]) //标准c语言主函数的声明 3 { 4 ...
- day03-CSS(1)
一 .Css概念 CSS 指层叠样式表 (Cascading Style Sheets)(级联样式表) Css是用来美化html标签的,相当于页面化妆. ◆样式表书写位置 二. 选择器 1. 写法 选 ...
- NHibernate 打不开工厂有可能是这几个原因
1. 属性必须虚拟化. 2.属性必须要有Id 字段 3.数据库必须要是创建好的数据库.
- 程序员必备,C#各类项目、开源项目插件资料收藏
一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面 ...
- python split 与join
1.string.join (saq):以string 为分隔符,将seq中所有的元素(字符串表示"")合并成一个新的字符串 2.string.split(str="&q ...
- js call apply bind
call.apply.bindcat.call(dog, a, b) == cat.apply(dog, [a, b]) == (cat.bind(dog, a, b))() 1.作用 改变函数内的t ...