本文主要针对 Azure VM 被锁住不能使用 SSH 登陆的解决办法。
在Azure的虚拟机中,想创建一个SFTP用户且想限制这个SFTP用户只能访问固定的目录,于是对sshd_config
进行修改,在配置文件中增加了 ChrootDirectory
、ForceCommand
Match User
和 AllowTcpForwarding
設定。
重启ssh服务后,造成所有User只能使用SFTP方式连接到VM,无法使用SSH连接到Server。
问题描述:
在Azure或者AWS误操作,禁用了SSH服务,造成不能连接到Server,出现如下警告信息:
This service allows sftp connections only.
尝试过程:
#1、 尝试使用另外的机器通过sftp方式远程连接到这台无法连接的机器,想通过这种方式在修改sshd_config
文件。 结果:最终失败
操作过程是:先通过如下命令进行sftp连接,在一台机器上已经连接上了该机器,但是只能使用sftp的linux命令,无法使用ssh中的vim等命令编辑文件。最后sshd_config
失败。
sftp mysftp@192.168.0.1
#2、 尝试使用sftp工具连接到这台机器,之后替换sshd_config
配置文件。结果:最终失败
操作过程是:首先使用WinSCP
连接到这台机器,之后访问路径/etc/ssh
,之后尝试编辑sshd_config
文件。我尝试了使用WinSCP和使用MobaXterm的sftp工具,都可以连接到这台机器,也都可以访问到/etc/ssh
,但是无法进行编辑sshd_config
文件,都提示:Permission denied
。并且期间尝试使用已root权限的方式(sudo)连接,均已失败。
#3、 尝试使用Azure portal中的RDP
进行远程连接。结果:最终失败
在Azure Portal中依次进入到Virtual machines
,找到该机器,之后点击左侧菜单Connect
,找到RDP
页面,点击下载RDP
文件,下载后的RDP
文件点击连击。
#4、 尝试使用Azure portal中的跳板机Bastion
进行远程连接。结果:最终失败
操作步骤同上述#3,进入到Connect菜单后找到Bastion后,点击Use Bastion按钮,进行登陆,但是在跳板机窗口中进行连接的时候依然提示:This service allows sftp connections only.
错误,无法连接。
#5、 尝试使用Azure 虚拟机的 root用户进行登陆或者sftp登陆替换文件操作。结果:最终失败
很遗憾Azure默认不会开启root用户给使用者,在操作之前也没有进行root的设定,查找了相关资料,都是默认没有开启root账号,需要人为设置root用户及密码。因为没有root用户,这个尝试最终失败。
操作到这里的时候,心里凉凉了一半,感觉已经无力回天了,基本只剩下了,给Azure客服打电话,尝试重置虚拟机,或者新建一台虚拟机操作了。
#6、 尝试给Azure客服打电话 / 或者起工单。未成功
官方网站找到客服电话:400-886-6134
,手机拨打的时候已经是晚上8点以后,超过客服服务时间,心里更将凉了。工单没有起,参照以前的经验,如果给Azure起工单,会花费非常久的时间后才会答复。
#7、 尝试重新部署虚拟机。结果:最终失败
同样在Azure portal中找到重新部署虚拟机服务,进行重新部署操作,重新部署成功,但是最终连接依然失败。因为Azure的重新部署服务会保留机器的配置和资源,这样你更改过的sshd_config
文件并没有经过重新部署而重置更新。
#8、 重新创建新的虚拟机,在移动出来里面的数据。可行,未操作
多次尝试失败后,想到了最差的方式来处理,那就是重新创建虚拟机。
大致的步骤是 step1:剥离出可插拔的硬盘disk。step2:备份出OS盘符下的有用数据。step3:删除既有的虚拟机(释放出当前endpoint的ip)。step4:创建新的虚拟机,并且关联原有endpoint的ip和可插拔的硬盘disk。step5:启动新虚拟机,进行mount挂载硬盘。
首先此种方法是可行的,在之前有这样操作过,但是该过程影响较多,需要和team内进行沟通,评估影响,并且需要得到相关lead的approval。
#9、 使用Azure的 Serial console操作。结果:成功
在即将放弃的时候,找到了Azure 虚拟机里面的一个服务:Serial console
,如下图,进入到后会提示输入用户名和密码,进入后和SSH连接vm几乎一模一样,最终使用vm重新设置sshd_config
后成功开启SSH连接。
#10、 使用Azure的系统备份进行还原。结果:可行,未操作
这个其实是我最早想到的方式,但是打开Azure portal后发现该虚拟机未开启自动备份功能,压根就没进行备份,非常之悲剧,所以这个在这次事件中未操作成功。但是如果你的机器有自动备份,那么可以利用恢复解决。
最后总结:经历了这次的惊心事件后,自己非常反思了这件事情,还好Azure有自己的一个连接工具方式(第#9种),让你可以连接到VM里面,如果没有那么将要耗费精力来进行恢复。新的Azure机器一定要开启备份,建议在做一些有风险的操作的之前进行备份一次,出现问题可以还原回去。另外关于Azure的VM,可以考虑开启root用户。
如果是AWS的EC2遇到了同样的问题可以参照:EC2 被鎖住不能使用 SSH 登入 怎麼辦?文章来源:https://www.toymoban.com/news/detail-502445.html
注:本文原创由 bluetata
发布于https://bluetata.blog.csdn.net/、转载请务必注明出处。文章来源地址https://www.toymoban.com/news/detail-502445.html
到了这里,关于[Azure - VM] 解决办法:无法通过SSH连接VM 解决错误 This service allows sftp connections only.的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!