用简短易记的用户名和密码连接群晖NAS的SFTP文件服务 2022.04.08
启动 Total Commander 10.52 时自动用SFTP插件异地远程连接Synology群晖NAS的SFTP文件服务的命令语法参数如下:
??????????????????????????????????
QuickSearch eXtended for Total Commander 7.5+
C:\Prog\TotalCMD\TCMatch.tbl
C:\Prog\TotalCMD\TCMatch64.dll
; ====== 脚本设置开始 =====
; 不检查空变量是否为环境变量(推荐所有新脚本使用).
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; 启用或禁用可能产生错误的特定状况时的警告, 例如书写错误或缺少全局声明.
; #Warn ; Enable warnings to assist with detecting common errors.
; 让 Send, SendRaw, Click 和 MouseMove/Click/Drag 切换到 SendInput 方法.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
; 改变脚本的当前工作目录. 当前脚本所在目录的绝对路径. 不包含最后的反斜杠(根目录同样如此).
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
; 不显示托盘图标.
#NoTrayIcon
; 决定当脚本已经运行时是否允许它再次运行.Ignore: 跳过对话框并让旧实例继续运行. 换句话说, 试图启动已经运行的脚本会被忽略.
#SingleInstance Ignore
; 设置脚本可以 "看见" 隐藏的窗口.
DetectHiddenWindows,On
; 设置在类似 WinWait 命令中 WinTitle 参数的匹配模式.•2 = 窗口标题的任意位置包含 WinTitle 才能匹配.
SetTitleMatchMode,2
; 让脚本持续运行(即直到用户关闭或遇到 ExitApp).
#Persistent
; ====== 脚本设置结束 =====
SetTimer,WinHideTimer,1000
Hotkey,^!F9,ShowWinSCP
return
WinHideTimer()
{
;超时毫秒数,1分钟*60秒/分钟*1000毫秒/秒=60000毫秒, 1秒 = 1000毫秒
;A_TimeIdlePhysical表示从系统最后一次接收到键盘,
;鼠标或其他输入后所经过的毫秒数. 这可以用来判断用户是否离开.
if(A_TimeIdlePhysical>60000)
{
; 让WinSCP在后台继续传输文件,并且键盘鼠标闲置超时1分钟之后隐藏WinSCP窗口,防止泄密,防止被非法访问
; 需要显示WinSCP 窗口时请按快捷键 Ctrl + Alt +F9 或者输入热字串
WinHide,WinSCP
WinHide,ahk_class TScpCommanderForm
WinHide,ahk_exe WinSCP.exe
SetTimer,WinHideTimer,Delete
}
}
;
ShowWinSCP()
{
WinShow,WinSCP
WinShow,ahk_class TScpCommanderForm
WinShow,ahk_exe WinSCP.exe
WinActivate,WinSCP
WinActivate,ahk_class TScpCommanderForm
WinActivate,ahk_exe WinSCP.exe
SetTimer,WinHideTimer,1000
}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellAPI;
type
TForm1 = class(TForm)
edtPwd: TEdit;
procedure tmr1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.tmr1Timer(Sender: TObject);
begin
if edtPwd.Text = '0000' then
begin
ShellExecute(handle, 'open', 'winscp.exe', '群晖SFTP用户名:群晖SFTP密码@群晖DDNS主机名称:端口转发的外部端口 /Desktop /UploadIfAny', nil, SW_SHOWNORMAL);
Application.Terminate;
end;
end;
end.
rem E:\Build\Autorun-Hotkey-Lnk\一键打包成单文件程序\一键打包成单文件程序.bat
rem Prog-SS-中的SS 是 Silent Setup 的简写,表示静默全自动安装
if exist "C:\Program Files (x86)\WinRAR\WinRAR.exe" (
"C:\Program Files (x86)\WinRAR\WinRAR.exe" a -ag__YYYY.MM.DD_HH-MM-SS -iiconi.ico -m5 -r -sfx -z%~dp0自解压脚本命令.txt %~dp0Prog-SS-.exe %~dp0..\*.*)
)else (
"C:\Program Files\WinRAR\WinRAR.exe" a -ag__YYYY.MM.DD_HH-MM-SS -iiconi.ico -m5 -r -sfx -z%~dp0自解压脚本命令.txt %~dp0Prog-SS-.exe %~dp0..\*.*)
exit
; E:\Build\Autorun-Hotkey-Lnk\一键打包成单文件便携可执行程序\自解压脚本命令.txt
;下面的注释包含自解压脚本命令
;Path=解压缩路径
;Presetup=解压缩前运行
;Setup=解压缩后运行,可以输入多行Setup=一起执行
;Silent=静默方式:1-隐藏全部 2-隐藏启动对话框 空着不设置-显示全部
;Overwrite=覆盖方式:1-覆盖全部文件 2-跳过已存在的文件 空着不设置-覆盖前询问
;请选择正确的图标并保存正确的配置文件
Path=C:\Prog\WinSCP
; 由于用Delphi编译之后的 “LoginSyno.exe” 再用“VProtect_Pro”等软件多次加密压缩多次加壳,
; 所以文件名变成了 “LoginSyno_VP.exe” ,只要能够通过真实机器实地测试,我宁可多加几层防护罩,防止NAS被非法入侵,防止NAS被非法访问
Setup=C:\Prog\WinSCP\LoginSyno\LoginSyno_VP.exe
Setup=C:\Prog\WinSCP\LoginSyno\WinHideTimer.exe
Silent=2
Overwrite=2
功能更新:
2023年3月5日 我分别用“Embarcadero.Delphi.11.2.v28.0.46141.0937.Lite.v17.2”和“Visual Studio Professional 2017 (version 15.7) (x86 and x64) 中的 VC++”重写了加密函数和登录函数,原理都差不多,主要是用if判断用户输入的
简短易记的密码是否正确,如果短密码正确则解密SFTP复杂用户名和SFTP复杂密码用Delphi或者C++语句执行WinSCP的命令行异地远程连接群晖NAS的SFTP文件服务。
WinSCP的启动命令格式是:
WinSCP.exe "群晖SFTP用户名:群晖SFTP密码@群晖DDNS主机名称:端口转发的外部端口" /Desktop /UploadIfAny
对于不知道详情的外部人员想要非法入侵“群晖NAS”窃取信息是比较困难的,假如不使用包含特殊字符的长度为127的用户名和包含特殊字符的长度为127的密码,而是用加密密钥加密文件或者用密钥文件验证身份登录的话就更加安全可靠了。
我实际测试 FileZilla Pro 的文件传输速度要比 WinSCP 和 FlashFXP 快,但是 FileZilla Pro 在修改文档或表格后需要手动确认才会上传修改后的文件,为了防止忘记确认上传文件,我果断抛弃 FileZilla Pro
坚持长期使用 速度比较慢的 WinSCP 版本 5.21.7 ( 构建版本 12963 2023-01-23 )
还是用 Delphi + VProtect_Pro 来加密群晖SFTP密码比较放心一点,虽然,AutoHotkey + VProtect_Pro 在我身边附近也没有人会脱壳破解取蜜。
把加密压缩打包后的“简易群晖登陆器.exe”存放在比较小的地理范围,我觉得这样很安全,因为,附件的解密高手不会太多,太远的超级解密高手又不知道情况(不知道我的国际顶级域名,不知道我的IP地址,不知到我的端口号,不知道我的操作系统类型,不知到我的127个字符的用户名,不知道我的127个字符的密码,不知道我的密钥文件,不知道我的加密函数和加密算法,不知到我的文件加密密钥)。
对外是超强的多层防火墙和多层加密,对内是一个简短易记的密码,一般情况下不会连 abc333 这样的密码也记不住吧。
在新的 Windows 电脑上只需要两步操作:
第1步:通过 “Synology Secure SignIn”无密码批准登录群晖DSM并下载 “简易群晖登陆器.exe”单文件压缩打包版。
第2步:用“简易群晖登陆器.exe”和用户大脑中记住的简短易记的密码异地远程登录群晖NAS。
WinSCP的一些快捷键也比较好用:
Shift + F4 新建并打开文件(可以新建abc.docx或者123.xlsx,需要在WinSCP中设置一下 编辑器 关联应用程序 *.*)
例如:按快捷键 Shift + F4 并输入 测试表格.xlsx 回车 表示先新建Excel电子表格文件“测试表格.xlsx”并打开电子表格进行编辑操作,如果在按快捷键 Shift + F4 之前已经选中已经存在的Excel电子表格文件“测试表格.xlsx”则是打开已经存在的Excel电子表格文件,而不是新建Excel电子表格文件。
Ctrl + E 编辑文件
Ctrl + D 新建文件夹
Ctrl + O 打开文件夹
鼠标拖放文件或者文件夹 上传或者下载文件,可以在电脑桌面与WinSCP窗口之间拖放文件夹是不是特别爽。
F3 查找文件
F2 重命名
Ctrl + T 下载
还有很多有用的功能可以参考 WinSCP主窗口的菜单栏、帮助文档、产品主页和支持论坛。
请在哔哩哔哩中搜索关键字 WinSCP
我的某台群晖网络存储服务器的SFTP文件服务的用户名是:
ds1821+usr-A_K-s_s_P_w-R_-_-Z_Y_-Y_w_K-q_u-U_U-_x_-_N-v_-w_A+end
我的某台群晖网络存储服务器的SFTP文件服务的密码是:
ds1821+pwd-AA8-e-KsL_5_6w77-Z-_Y_-M-G-R_E_dV-U-_x_pp_-79_wNA+end
用户名和密码都比较长比较安全不易被猜解不易被穷举不易被Crack也不易被记住