Termscp--终端界面的多协议多平台文件传输管理
这篇教程来自termscp官方文档,终于找到一个可以替代FileZilla/scp/rz/sz的工具了,用choco安装也很方便(我的win10居然已经预装了)。目前发现的槽点包括跳转比较慢,搜索巨慢,还有窗口太小会报错= =! 以下是本文余下内容是官方文档的中文版翻译。
操作指南 🎓
用法
termscp启动时可以使用以下选项:
termscp [options]... [protocol://user@address:port:wrkdir] [local-wrkdir]
-P, --password <password>
登陆密码-c, --config
打开termscp时打开配置页面-q, --quiet
禁用日志-t, --theme <path>
导入自定义主题-v, --version
打印版本信息-h, --help
打开帮助
termscp有两种不同的启动模式,不带参数时,termscp将显示登录表单页,用户可以填写连接到远程服务端所需的参数。
或者,用户可以提供一个url作为参数,跳过认证页,直接与远程服务器进行连接。
如果提供了url参数,你也可以提供本地主机的起始工作目录。
地址参数
地址参数的格式如下:
|
让我们通过一些例子熟悉这个特殊语法,它很好上手,你会很快习惯并且替代其他工具……
使用默认协议(在配置中定义)连接到192.168.1.31,如果没有提供端口,则为所选协议的默认端口(取决于你的配置);用户名是系统当前用户名
termscp 192.168.1.31
使用默认协议(在配置中定义)连接到192.168.1.31,用户名为
root
termscp root@192.168.1.31
使用scp连接到192.168.1.31, 端口号为4022; 用户名为
omar
termscp scp://omar@192.168.1.31:4022
使用scp连接到192.168.1.31, 端口号为4022; 用户名为
omar
。工作目录为/tmp
termscp scp://omar@192.168.1.31:4022:/tmp
如何输入密码
你可能已经注意到,url参数中没有办法直接附加密码,你可以通过以下三种方式提供密码:
-P, --password
不推荐:直接在参数中填写明文密码。强烈不推荐这种方法,因为它非常不安全(因为你可能会把密码保留在shell历史记录中)。- 通过
sshpass
: 你可以通过sshpass
传入密码, 例如:sshpass -f ~/.ssh/topsecret.key termscp cvisintin@192.168.1.31
- 提示输入密码:如果你不使用前面的任何方法,你会被提示输入密码,就像
scp
、ssh
等比较经典的工具上一样。
文件浏览
termscp中的文件资源管理器是指你与远程建立连接后可以看到的面板。
面板由3个部分组成(是的,就这三个):
- 本地资源管理器面板:它显示在你的屏幕左侧,显示localhost的当前目录文件列表。
- 远程资源管理器面板:它显示在你屏幕的右边,显示远程主机的当前目录文件列表。
- Find results panel: depending on where you’re searching for files (local/remote) it will replace the local or the explorer panel. This panel shows the entries matching the search query you performed.查找结果面板:根据你搜索文件的位置(本地/远程),它将取代对应资源管理器面板。这个面板显示与你执行的搜索查询相匹配的条目。
为了切换面板,你需要输入 <LEFT>
来移动远程资源管理器面板,<RIGHT>
来移动回本地资源管理器面板。当在查找结果面板时,你需要按<ESC>
来退出面板,回到前一个面板。
快捷键
按键 | 命令 | 助记词 |
---|---|---|
<ESC> | 断开远程连接;回到登录页 | |
<TAB> | 在日志面板和管理器面板之间切换 | |
<BACKSPACE> | 返回上一次目录 | |
<RIGHT> | 切换到远程管理器面板 | |
<LEFT> | 切换到本地管理器面板 | |
<UP> | 在当前列表中向上移动光标 | |
<DOWN> | 在当前列表中向下移动光标 | |
<PGUP> | 在当前列表中光标上移8行 | |
<PGDOWN> | 在当前列表中光标下移8行 | |
<ENTER> | 进入文件夹 | |
<SPACE> | 上传 / 下载选中文件 | |
<A> | 是否显示隐藏文件 | All |
<B> | 按..排序 | Bubblesort? |
<C> | 复制文件(夹) | Copy |
<D> | 创建文件夹 | Directory |
<E> | 删除文件(同 DEL ) | Erase |
<F> | 文件搜索 (支持通配符) | Find |
<G> | 跳转到指定路径 | Go to |
<H> | 显示帮助 | Help |
<I> | 显示选中文件(夹)信息 | Info |
<L> | 刷新当前目录列表 / 清除选中状态 | List |
<M> | 选中文件 | Mark |
<N> | 使用键入的名称新建文件 | New |
<O> | 编辑文件;参考文本编辑器文档 | Open |
<Q> | 退出termscp | Quit |
<R> | 重命名文件 | Rename |
<S> | 另存为… | Save |
<U> | 进入上层目录 | Upper |
<V> | 使用默认方式打开文件 | View |
<W> | 使用指定程序打开文件 | With |
<X> | 运行命令 | eXecute |
<Y> | 是否开启同步浏览 | sYnc |
<DEL> | 删除文件 | |
<CTRL+A> | 选中所有文件 | |
<CTRL+C> | 终止文件传输 |
处理多个文件
你可以同时操作多个文件,按<M>
选定它们,或者按<CTRL+A>
全选当前工作目录中的所有文件。一旦一个文件被标记为选择,它将在左边显示一个 *
。在这种模式下,只有选定的文件会被处理,而当前光标高亮显示的项目会被忽略。在查找结果面板中,也可以对多个文件进行处理。
在处理多个文件时,所有的操作都是可用的,但请注意,有些操作的工作方式略有不同。让我们深入了解一下:
- 复制: 当你复制一个文件时,你会被提示输入完整目标路径名。当处理多个文件时,这个名称指的是所有这些文件将被复制到的目标目录。
- 重命名: 和复制操作类似, 但是会移动文件到目标路径。
- 保存为: 和复制操作类似, 但是会写入文件到目标路径。
同步浏览
启用时,同步浏览将允许你在两个面板之间同步导航操作。这意味着,每当你在一个面板上改变工作目录时,同样的动作会在另一个面板上重现。如果你想启用同步浏览,只需按下<Y>
;按两次就可以禁用。当启用时,同步浏览的状态将在状态栏上显示为ON
。
警告:目前,每当你试图访问一个不存在的目录,你不会被提示创建它。这点可能会在未来的更新中改进。
打开/打开方式
打开和打开方式的功能是由[open-rs](https://docs.rs/crate/open/1.7.0)提供的。
执行视图命令(<V>
)时,关联该文件类型的系统默认应用程序会被调用以打开当前文件。这依赖于操作系统默认的服务,所以要确保你的系统中至少安装了一个这样的服务:
- Windows 用户: 无需额外操作,程序内部会调用
start
命令。 - MacOS 用户: 同样无需额外操作,程序内部会调用系统内置的
open
命令。 - Linux 用户: 以下程序之一需要被安装:
- xdg-open
- gio
- gnome-open
- kde-open
- WSL 用户: wslview 是必要的,你需要安装 wslu.
Q: 我可以使用V命令编辑远程文件吗?
A: 不可以,至少不能在 “远程管理面板 “上直接操作。你必须先把它下载到本地目录,这是由于当你打开一个远程文件时,该文件会被下载到一个临时目录中,但没有办法监控这个文件的状态,同时也无法得知你用来打开它的程序何时被关闭。也就是说,termscp无法获知你何时完成对该文件的编辑。
书签
在termscp中,你可以保存常用的服务器,随后可以从termscp的主界面中快速连接到这些服务器。termscp也会在历史记录中保存你最后连接的16个主机。这个功能保留了连接到某个远程服务器的所有参数,只需在登录页下方的Tab中选中书签即可。
书签会尝试被保存在以下路径:
$HOME/.config/termscp/
– Linux/BSD$HOME/Library/Application Support/termscp
– MacOsFOLDERID_RoamingAppData\termscp\
– Windows
对于书签(不包括服务器连接历史记录)而言,也可以保存用于验证的密码。注意默认情况下不保存密码,必须在保存新书签时通过提示指定密码。
我对在termscp中存储密码的做法非常持保留意见。原因是什么?在你的电脑上保存密码可能会让黑客进入你所注册的任何服务器。但我必须承认,对许多机器来说,每次都输入密码真的很无聊,而且很多时候我必须与局域网内的机器一起工作,这对攻击者来说没有任何好处,所以我想出了一个折衷办法来处理密码。
我强烈建议你遵循这些原则,以决定你是否应该本地保存密码:
- 绝对不要 在连接公网的机器上本地保存密码,只可以在局域网机器上这么做
- 确保你的机器有网络保护措施。可以的话,对你的磁盘进行加密,并且在你离开时锁定你的电脑。
- 最好是在确保目标机器不易受影响的情况下才保存密码。
请按照以下步骤新建书签:
- 在认证页中输入待连接服务器的参数
- 按
<CTRL+S>
- 输入书签名称
- 选择是否保留密码
- 按
<ENTER>
提交
无论何时你想使用以前保存的连接,只需按下<TAB>
导航到书签列表,然后按<ENTER>
将书签参数加载到表格中。
我的密码安全吗?
这是当然 😉。
如前所述,书签与密码一起保存在你的配置目录中。密码显然不是纯文本,它们是用AES-128加密的。这够不够安全?绝对够 (BSD和WSL用户除外😢)
在Windows、Linux和MacOS上,如果可能的话(但应该是),密码会被分别存储在Windows Vault、系统钥匙串和Keychain中。这实际上是超级安全的,并且是由你的操作系统直接管理的。
❗请注意,如果你是一个Linux用户,你真的应该阅读下面的章节👀,因为你的系统可能没有启用或支持钥匙串功能
另一方面,在BSD和WSL上,用于加密密码的密钥是存储在你的驱动器上的(在$HOME/.config/termscp)。那么,仍然有可能检索到密钥来解密密码。幸运的是,密钥的位置保证了你的密钥不能被与你不同的用户读取,但是,是的,我仍然不会为暴露在互联网上的服务器保存密码😉。
Linux Keyring
我们都喜欢Linux,因为它给了用户自由。作为一个Linux用户,你基本上可以做任何你想做的事情,但这也有一些缺点,比如说,不同的发行版之间往往没有标准的应用程序。这也涉及到钥匙串。
这意味着,在Linux上,你的系统可能没有安装钥匙串。不幸的是,我们用来处理钥匙存储的库需要一个在D-BUS上公开org.freedesktop.secrets
的服务,而最糟糕的事实是,只有两个服务在公开它。
- ❗ 如果你使用GNOME作为桌面环境(例如ubuntu用户),那么你是幸运的,因为钥匙串已经由
gnome-keyring
提供,一切都应该已经准备就绪了。 - ❗对于其他桌面环境的用户,有一个很好的程序,你可以用它来获得钥匙串,这就是KeepassXC,我在我的Manjaro中使用它(带KDE),一切都很正常。唯一的问题是,你必须设置它与termscp一起使用(但这很简单)。要开始使用KeepassXC,请阅读更多[这里](#keepassxc-setup-for-termscp)。
- ❗如果你不想安装任何这些服务呢?好吧,这没有问题! termscp依然能正常工作,但它会将密钥保存在一个文件中,就像它通常为BSD和WSL做的那样。
KeepassXC setup for termscp
参照以下步骤,为termscp配置keepassXC:
- 安装KeepassXC
- 进入工具栏的 “工具”>”设置”。
- 选择 “秘密服务集成 “并切换 “启用KeepassXC freedesktop.org secret服务集成”
- 创建一个数据库,如果你还没有:在工具栏的 “数据库”>”新数据库”
- 从工具条上 “数据库” > “数据库设置”
- 选择 “secret服务集成 “并切换 “在此组下暴露条目”
- 7.在列表中选择你希望termscp secret保存到的组。记住,这个组可能被任何其他应用程序通过DBUS存储密钥。
配置
termscp支持一些用户定义参数,这些参数可以通过配置来修改。
termscp有一个TOML文件和一些其他的目录,所有的参数都会被保存在这些目录中,但是不用担心,你不必手动编辑这些文件,因为我为termscp制作了可交互的用户界面。
termscp和书签一样,只需要保证这些路径是可访问的:
$HOME/.config/termscp/
– Linux/BSD$HOME/Library/Application Support/termscp
– MacOsFOLDERID_RoamingAppData\termscp\
– Windows
要访问配置,你只需在termscp的主界面上按<CTRL+C>
。
这些参数可以自定义:
- Text Editor:使用的文本编辑器。默认情况下,termscp将为你找到默认的编辑器;通过这个选项,你可以强制使用一个编辑器(如
vim
)。也支持GUI编辑器,除非它们从父进程中nohup
。所以,如果这是你的问题:是的,你可以使用notepad.exe
,然而,Visual Studio Code不工作。 - Default Protocol:默认协议是termscp中默认使用的文件传输协议。这适用于登录页和地址中的CLI参数。
- Show Hidden Files:选择是否应默认显示隐藏文件。你可以在运行时按
A
来切换是否显示隐藏的文件。 - Check for updates:如果设置为
yes
,termscp将通过Github API检查是否有新版本的termscp。 - Group Dirs:选择在文件浏览器中是否对文件夹进行分组。如果选择
Display first
,目录将根据设置的方法排序,但仍显示在文件之前;如果选择Display last
,则正好相反。 - Remote File formatter syntax:在远程资源管理器中为每个文件显示文件信息的语法。参见资源管理器格式
- Local File formatter syntax:在本地资源管理器中显示每个文件的文件信息的语法。参见资源管理器格式
SSH Key Storage
配置选项还包括termscp为SFTP/SCP客户端提供的一个必要功能:SSH密钥存储。
你可以从配置中切换到到 SSH Keys
tab页来访问SSH密钥存储,在那里你可以:
- Add a new key:只需按下
<CTRL+N>
,你将被提示创建一个新的密钥。提供主机名/ip地址和与该钥匙关联的用户名,最后会打开一个文本编辑器:将PRIVATE SSH key粘贴到文本编辑器中,保存并退出。 - Remove an existing key:只要在你想删除的密钥上按下
<DEL>
或<CTRL+E>
,就可以从 termscp 中永久删除该密钥。 - Edit an existing key:只需在你想编辑的密钥上按下
<ENTER>
,就可以修改私钥。
问:等等,我的私钥受密码保护,也是可以用的吗?
答:当然可以。termscp中提供的认证密码,对用户名/密码认证和RSA密钥认证都有效。
资源管理器格式
可以为文件浏览器配置自定义的格式,本地和远程主机允许进行单独设定,所以你可以使用两种不同的语法。这些字段的名称为 File formatter syntax (local)
和 File formatter syntax (remote)
,将定义文件条目如何在文件资源管理器中显示。
格式化的语法如下 {KEY1}... {KEY2:LENGTH}... {KEY3:LENGTH:EXTRA} {KEYn}...
。
花括号内的每个键将被替换成相关的属性,而括号外的所有内容将保持不变。
- 键名是固定的,必须是下面的关键字之一
- 长度指定了为显示该字段而保留的长度。静态属性不支持这个参数(GROUP、PEX、SIZE、USER)。
- Extra只被一些特定字段支持,也是可选的。请看各字段详细描述来判断是否支持Extra参数。
以下是自定义格式支持的键名:
ATIME
: 最后访问时间(默认语法为%b %d %Y %H:%M
);Extra参数可以指定时间显示语法(例如:{ATIME:8:%H:%M}
)CTIME
: 创建时间(语法为%b %d %Y %H:%M
);Extra参数可以指定时间显示语法(例如:{CTIME:8:%H:%M}
)GROUP
: 所属组MTIME
: 最后修改时间(语法为%b %d %Y %H:%M
);Extra参数可以指定时间显示语法(例如:{MTIME:8:%H:%M}
)NAME
: 文件名(超过24个字符的部分会被省略)PEX
: 文件权限(UNIX格式)SIZE
: 文件大小(目录不显示)SYMLINK
: 超链接(如果存在的话-> {FILE_PATH}
)。USER
: 所属用户
如果留空,将使用默认的格式化语法。{NAME:24} {PEX} {USER} {SIZE} {MTIME:17:%b %d %Y %H:%M}
。
主题
Termscp为你提供了一个很棒的功能:可以为应用程序中的几个组件配置颜色。
如果你想自定义termscp,有两种可用的途径:
- 从配置菜单
- 导入一个配置文件
为了从termscp创建你的私人定制,你所要做的就是从auth活动页进入配置,按<CTRL+C>
,然后<TAB>
两次。你现在应该已经移到了 themes
面板。
在这里你可以用<UP>
和<DOWN>
移动来选择你想改变的样式,如下图所示:
termscp支持传统的十六进制(#rrggbb
)和RGBrgb(r, g, b)
语法来表示颜色,但也接受 **css颜色**(如crimson
)😉。还有一个特殊的关键词是Default
,意味着使用的颜色将是基于情景的默认前景或背景颜色(文本和线条的前景色,以及容器的背景色,你猜是什么)。
如前所述,你也可以导入主题文件。你可以从themscp提供的主题中获取灵感或直接使用其中的一个,位于这个代码仓库的themes/
目录下,运行themscp以导入它们 termscp -t <theme_file>
。最后,如果一切正常,它应该提示你主题已经成功导入。
样式
你可以在下面的表格中找到每个样式字段的描述。
请注意,样式在配置页面不起作用,以保证它总是可以访问,以防你把一切都弄乱了。
登录页
字段 | 描述 |
---|---|
auth_address | IP地址输入框的颜色 |
auth_bookmarks | 书签面板的颜色 |
auth_password | 密码输入框的颜色 |
auth_port | 端口输入框的颜色 |
auth_protocol | 协议选项组的颜色 |
auth_recents | 历史记录面板的颜色 |
auth_username | 用户名输入框的颜色 |
文件传输页
字段 | 描述 |
---|---|
transfer_local_explorer_background | 本地资源浏览器的背景色 |
transfer_local_explorer_foreground | 本地资源浏览器的前景色 |
transfer_local_explorer_highlighted | 本地资源浏览器的边框和高亮色 |
transfer_remote_explorer_background | 远程资源浏览器的背景色 |
transfer_remote_explorer_foreground | 远程资源浏览器的前景色 |
transfer_remote_explorer_highlighted | 远程资源浏览器的边框和高亮色 |
transfer_log_background | 日志面板的背景色 |
transfer_log_window | 日志面板的窗口颜色 |
transfer_progress_bar_partial | 进度条完成部分颜色 |
transfer_progress_bar_total | 进度条背景色颜色 |
transfer_status_hidden | 状态栏 “hidden” 标签的颜色 |
transfer_status_sorting | 状态栏 “sorting” 标签的颜色;同时适用于文件排序对话框 |
transfer_status_sync_browsing | 状态栏 “sync browsing” 标签的颜色 |
Misc
以下这些样式会在程序不同的位置起作用:
字段 | 描述 |
---|---|
misc_error_dialog | 报错信息的颜色 |
misc_input_dialog | 输入对话框的颜色(比如拷贝文件时) |
misc_keys | 键盘输入文字的颜色 |
misc_quit_dialog | 退出窗口的颜色 |
misc_save_dialog | 保存窗口的颜色 |
misc_warn_dialog | 警告窗口的颜色 |
文本编辑器
Termscp有很多功能,你可能已经注意到了,其中之一就是可以查看和编辑文本文件。不管文件是在本地主机还是在远程主机上,termscp都提供了在你喜欢的文本编辑器中打开文件的功能。
如果文件位于远程主机上,该文件将首先被下载到你的临时文件目录中,然后,只有在对该文件进行了修改的情况下,才会重新上传至远程主机上。
多说一句,你只能编辑文本文件;二进制文件是不可以的。
如何配置文本编辑器?
文本编辑器是通过awesome crate自动查找的,如果你想改变默认的文本编辑器,请在termscp配置中改变它。阅读更多
日志
termscp会为每个会话创建一个日志文件,该文件在
$HOME/.config/termscp/termscp.log
– Linux/BSD$HOME/Library/Application Support/termscp/termscp.log
– MacOsFOLDERID_RoamingAppData\termscp\termscp.log
– Windows
日志不会滚动,只是在每次启动 termscp 后被截断,所以如果你想报告一个问题并想附上你的日志文件,再次启动 termscp 之前请先将日志文件保存在一个安全的地方。日志文件总是以trace级别报告,所以它有点冗长。我知道你可能有一些关于日志文件的问题,所以我做了一个Q/A:
有没有可能降低日志级别?
不可以,原因很简单:当一个问题发生时,你必须能够知道是什么原因造成的,而唯一的办法就是在日志文件中设置记录最多的细节。
如果日志级别设置为trace,会产生很大的文件吗?
应该不会,除非你从不退出termscp,但我认为这很可能发生。一个长的会话可能会产生高达10MB的日志文件(我说的是一个长的会话),但我认为一个正常的会话不会超过2MB。
我不希望有日志记录,我可以把它关掉吗?
可以的。只要用-q or --quiet
选项启动termscp。你可以用别名来启动termscp从而使这个选项一直生效。记住,日志是用来诊断故障的,所以在每个开源项目的背后,都应该有这样的互动反馈,保留日志文件可能是你支持项目的途径😉。我不想让你感到内疚,只是想提一句。
日志是安全的吗?
如果你担心安全问题,日志文件不包含任何普通的密码,所以不用担心,它暴露的信息与同级文件 书签
报告的信息相同。