前言

标题准确描述应该是“在远程连接工具中找回服务器密码”。取了当前这个不太通顺的标题是想能更好地被搜索引擎搜到。这篇文章的重点在找回密码而不是重置密码:服务器无论是云服务器还是本地的虚拟机,通过搜索引擎都能找到一套重置密码的解决方案。但是这些方案往往比较繁琐,如果不高兴折腾或是像我一样特别想折腾(和自己杠上了一定要知道过去的自己设定的密码是什么),也可以通过其他方案找回密码。今天要分享的就是通过远程连接工具找回密码的方法。

接下来我会列出我使用的三种工具找回密码的方法,分别是 Mac OS 下的 SecureCRT、Transmit 和 Windows 下的 FileZilla。当然能使用本文章方法的前提是曾经使用过这类工具连接服务器并且保存了密码。

FileZilla

我在 Windows 中使用的是 FileZilla,本地存储密码文件的路径是

C:\Users\ *你的用户名* \AppData\Roaming\FileZilla\recentservers.xml

找到需要找回的服务器和用户标签,有

<Pass encoding="base64">*加密了的密码*</Pass>

这里就差直接告诉你密码了。通过搜索引擎找到 base64 解密方法,找回密码。

题外话 Windows 系统下 AppData 中保存了基本所有应用的数据。这个文件夹默认是隐藏文件夹推荐直接通过路径访问,而不是图形化里点进去。

SecureCRT

我在 mac os 下使用 SecureCRT 作为 SSH 工具。打开SecureCRT在顶部菜单栏中按照 Options -> Global Options 可以找到文件存放路径。默认的是

/Users/*你的用户名*/Library/Application Support/VanDyke/SecureCRT/Config

同样建议直接通过路径访问,finder的快捷键是shift+command+g
在这个路径下打开 Sessions 文件夹,里面按照服务器地址保存了 xxx.ini 文件。也可以直接通过command+space来搜索.ini文件(Spotlight Search 我隐约记得老版本的 mac 是 ctrl+space 热键)。

在这个文件中如果你之前保存了密码,那就会有

D:"Session Password Saved"=00000001

之后在

S:"Password V2"=*加密了的密码*

里有保存加密过后的密码。这里是使用 Blowfish 进行加密的,网上可以找到解密方法这里就不赘述了。如果使用脚本解密需要留意字符串是否能对应上。比如网上某个 python 脚本中

REGEX_PASSWORD=re.compile(ur'S:"Password"=u([0-9a-f]+)')

这个正则表达式就和我环境下实际字符串匹配不上,需要加上V2。

Transmit

我在 Mac OS 下使用 Transmit 作为 SFTP 工具。Transmit 是直接将密码保存在 Keychain 中的,直接command+space(Spotlight Search)打开 Keychain,找回密码。属于开卷题了。

总结

找回密码的方式肯定有很多很多中,本文分享了通过远程连接工具找回密码的方法。

当我试了好几次密码都进不去系统时,我首先想到的是我通过各种软件访问操作肯定会留下痕迹。同时我能确定远程连接工具密码肯定是保存在本地的:局域网环境下工具也能正常使用。

重置密码简单粗暴,但是属实是属于下下策,就和遇事不决重装系统一样。

最后引用一下以前简书博客记录的win10开机主板logo后黑屏心路历程:

最后发现问题出在显示器。因为我是双屏,开机后主板信息出现在显示器1,然后系统信息出现在显示器2(我也不知道为啥就是这么魔幻,我猜是按照接口顺序显示器1优先显示,操作系统里设置的是显示器2优先显示)。而我显示器2的连接线坏了,所以就会出现题目中说的情况,显示主板 logo 后就黑屏了。比较坑的是,连接线坏了导致显示器2提示能接受到信号输入但是屏幕什么都不显示,一度还让我以为是显卡出了问题。换了新的连接线以后一切搞定。
如果直接按网上给出的统一结论重装系统重装硬盘,费时费力还解决不了问题。

在使用简单粗暴的方法之前,还是要先思考问题的本质是什么,以及自己的环境的特殊性在哪。

Q.E.D.