WinSCP,作为安全文件传输的基本工具,不仅提供了图形用户界面。WinSCP命令行功能允许IT专业人员和系统管理员直接从控制台管理和自动化文件传输,提高了工作流程的效率和灵活性。
要了解WinSCP GUI的方方面面,请查看本文的补充文章WinSCP GUI:终极指南。
在这个终极指南中发现WinSCP提供的每个命令行功能。您将逐步学习如何利用WinSCP命令行来最大化您的生产力并简化文件传输流程。
让我们深入了解WinSCP的命令行文件管理世界吧!
使用WinSCP命令行的先决条件
- A Windows XP+ PC – This tutorial will use Windows 10 Enterprise.
- A remote Linux host – This tutorial will use an Ubuntu 18.04.5 LTS machine.
- A user account on the remote SSH host with sudo permissions.
使用WinSCP命令行生成会话URL
虽然WinSCP GUI提供了一个方便的登录窗口用于建立连接,但WinSCP命令行需要一种不同的方法。您必须以更直接的方式指定连接属性,而不是交互式窗口。

要指示WinSCP命令行连接到哪里,需要使用会话URL。此URL封装了GUI中定义的连接属性。
A basic session URL follows this structure:
例如,要在WinSCP中使用SFTP连接到主机1.1.1.1
,用户名为adam
,密码为pw
,会话URL如下:
如果您已经设置了WinSCP站点,您可以轻松找到会话URL。打开WinSCP GUI,点击会话,右键单击您的站点,然后选择生成会话URL/代码。

会话URL对话框提供了各种自定义选项,用于连接,每个选项都影响WinSCP与远程主机的交互方式。
- 初始目录 – 指定WinSCP连接后打开的远程目录。
- SSH主机密钥 – 使用现有的SSH密钥进行远程主机身份验证。
- WinSCP特定URL – 生成一个唯一的会话URL,如
WinSCP-sftp://
,专门用于WinSCP的理解,避免与默认Web浏览器发生冲突。 - 保存扩展名 – 通常与WinSCP特定的URL一起使用,以进一步减小应用程序冲突。
当所有选项都启用时,会话URL格式应如下:

掌握WinSCP命令行:生成会话连接代码
有了会话URL,WinSCP更进一步地提供了在生成会话URL/代码窗口的脚本选项卡中选择的代码示例:
- 脚本文件
- 批处理文件
- 命令行
- PowerShell脚本
选择您喜欢的脚本类型,WinSCP将生成连接到远程主机所需语法,使用WinSCP命令行。

对于在.NET、C#或PowerShell中编码,请切换到.NET装配代码选项卡,如下所示。

了解WinSCP.exe与WinSCP.com在WinSCP命令行环境中的区别
知道如何生成会话URL对于使用WinSCP命令行工具至关重要。让我们探讨如何使用这些工具连接到主机,首先了解winscp.exe和winscp.com之间的区别。
Winscp.exe既是GUI启动器,也是用于简单任务的命令行实用程序。如果指定正确的参数,您可以将其用于基本命令。
将winscp.exe视为WinSCP的GUI功能和命令行界面之间的桥梁。
对于更复杂的任务,特别是在脚本中,winscp.com是您的首选。这个基于控制台的工具非常适合自动化脚本,并支持一系列SSH功能。它提供了一个真正的、非交互式的WinSCP命令行体验。
无论您选择哪个,首先打开命令提示符(cmd.exe或PowerShell),然后导航到WinSCP安装目录。
有了准备好的命令提示符,让我们继续使用WinSCP进行远程连接。
使用WinSCP.exe:使用会话URL连接远程主机
通过以会话URL作为参数运行winscp.exe是使用WinSCP命令行连接到远程主机的最简单方法。例如,要连接到主机54.179.19.216
,用户名为automate
,密码为automate
,使用sftp
,然后导航到/tmp目录,请使用以下命令:
为了提高安全性,您可以使用/privatekey
参数连接到远程主机,而不是使用密码。虽然这种方法更安全,但设置私钥的复杂性超出了本教程对WinSCP命令行的范围。
以下是使用用户名automate
和私钥mykey.ppk
通过scp
连接到主机54.179.19.216
的示例。
使用WinSCP.exe高效下载文件,无需站点
WinSCP命令行通过winscp.exe可以在没有预定义WinSCP站点的情况下快速传输文件。让我们探讨在没有站点配置的情况下从远程主机下载文件的方法。例如,在不使用站点配置的情况下从远程主机54.179.19.216下载/tmp目录中的所有文件。
1. 开始生成会话URL。下面是一个例子,连接到远程主机的凭据为automate
,并着陆在/tmp目录下。
2. 运行winscp.exe并使用会话URL访问WinSCP传输设置对话框。本地目录默认为~\Documents,WinSCP将目标所有远程目录中的文件(\\*.*
)。
3. 点击确定以开始传输。WinSCP将下载所有文件从远程/tmp目录到您选择的本地目录通过SFTP。

使用WinSCP.exe上传文件而不使用站点
在掌握文件下载后,让我们转向使用WinSCP命令行和winscp.exe上传文件到远程主机。这个过程类似于下载,但这次您还需要使用/upload
开关,指定要上传的文件或文件夹。
执行上面的命令会弹出WinSCP上传对话框,指示要上传的文件(*.*
)到远程主机的/tmp目录。

上传后,请使用SSH客户端登录远程主机,并使用诸如pwd
和ls -lh
等命令验证上传成功,这些命令将显示目录内容,确认成功传输。

利用WinSCP.exe下载文件使用站点
会话URL对于临时连接很实用,但拥有预配置的WinSCP站点会简化流程。如果您已经使用WinSCP一段时间,您可能已经设置了几个站点。
使用winscp.exe,您可以轻松地利用这些在GUI中创建的站点连接到远程主机,无需记住会话URL的详细信息。
要在WinSCP中找到保存的站点,请导航到会话 -> 站点 -> 站点管理器。
例如,让我们探讨使用预先存在的站点下载文件与WinSCP命令行。
1. 使用已配置的WinSCP站点连接到远程主机。下面的示例演示了使用名为Adamsite
的站点进行连接。
连接成功后,WinSCP会显示状态通知。

2. 接下来,执行winscp.exe,使用协议(sftp
)、站点名称(Adamsite
)和目标目录(/tmp
)。这种方法会弹出WinSCP传输设置对话框,准备进行文件下载操作。
点击“确定”开始通过SFTP从远程主机的/tmp目录下载所有文件到您的本地目录。

要将文件从本地计算机上传到远程主机,该过程类似。使用
/upload
开关以及文件或目录路径,例如winscp.exe Site3 /upload .\license.txt
。不需要完整的URL规范(sftp://Adamsite/tmp
)。
使用WinSCP.exe简化远程文件编辑
需要在远程主机上编辑文本文件吗?跳过手动下载-编辑-上传循环。WinSCP命令行提供了一种更高效的方法,使用/edit
参数。只需指定站点名称、/edit
和远程文件路径。
示例:
执行以上命令会启动您默认的文本编辑器,允许您根据需要修改远程文件。这种无缝集成是WinSCP命令行功能的关键特性之一。

编辑后,只需保存文件。WinSCP会负责更新远程主机上的文件,简化编辑上传过程。
使用WinSCP.exe会话日志优化工作流程
为了全面记录您的操作,WinSCP命令行提供会话日志记录功能。此功能对于跟踪会话期间执行的命令,帮助故障排除和记录非常宝贵。
要启用会话日志记录,在连接会话时包含最多三个参数:
/log
– 指定日志文件的路径。/loglevel
– 设置日志的详细程度,从Reduced(1
)到Debug(2
)不等。/logsize
– 定义日志文件的大小和轮换方式,格式为<total archived logs>*<max log file size>
。
以下是winscp.exe连接到主机并将活动记录到C:\winscp.log
的Debug级别的示例。该命令保留最多五个10MB的日志文件(5*10MB
)。
使用WinSCP.com交互命令探索高级功能
虽然winscp.exe提供了远程连接的出色介绍,但winscp.com提升了您的命令行体验,提供更深入的交互和控制。
开始通过命令行环境打开winscp.com。您将进入一个类似于SSH的交互式会话,由winscp>
提示表示。
使用open
命令连接到远程计算机,后跟所需的站点名称。
通过WinSCP命令行连接到远程主机后,就像使用Adamsite
所示的那样,您将发现自己处于类似SSH会话的环境中。在这里,您可以执行命令并与远程主机进行高效交互。

增强安全性:在WinSCP中使用新的密钥对(主机密钥)
公钥认证增强了连接会话时的安全性。要使用它,首先获取会话的主机密钥指纹。在WinSCP文件夹中使用以下语法执行ssh-keygen
命令。
此命令生成一个SSH密钥对,用于安全认证。一旦执行,您将收到连接winscp.com会话所需的指纹。

要使用hostkey
参数连接,请如下例所示提供生成的指纹。
在使用
ssh-keygen
生成的指纹时,请包括前缀ssh-rsa 2048
。
通过WinSCP.com最大化效率:使用/command
参数
在某些任务中,交互式会话非常棒,但对于脚本和自动化来说,非交互式命令执行至关重要。通过winscp.com的/command
参数,您可以在单个步骤中建立会话、执行命令并断开连接。
例如,使用/command
参数将本地文件传输到远程主机。下面的示例演示了从C:\abc\abc.txt复制文件到远程主机/tmp目录的过程,远程主机的IP是13.213.61.127
。
/command
参数接受两个字符串作为参数:一个用于建立会话,另一个用于实际命令执行。
使用WinSCP.com自动化任务:/script
参数
对于更复杂的自动化需求,winscp.com中的/script
参数允许您从脚本中执行一系列命令。在处理远程主机上的重复任务或复杂操作时,此功能非常有价值。
要使用WinSCP命令行中的/script
参数,请首先使用您喜欢的文本编辑器在桌面上创建一个名为upload_file_script.txt的脚本文件。
在远程计算机的/tmp目录中准备一个名为a.txt的空文本文件。
在C:\abc上创建一个本地目录。
接下来,请将以下内容输入到upload_file_script.txt并保存。此脚本从远程/tmp目录下载a.txt文件,然后重新上传为new_file.txt。
使用以下命令在 WinSCP 中使用/script
参数执行此脚本:
使用
/ini=nul
开关防止 WinSCP 在退出时保存任何会话配置。
利用 WinSCP.com 进行密钥转换
WinSCP 支持基于密码和证书或公钥身份验证。要使用公钥身份验证,需要兼容的私钥格式。WinSCP 提供了转换密钥格式以实现兼容性的帮助。
例如,使用WinSCP 命令行将 PEM 格式私钥(如来自 AWS EC2 的私钥)转换为 Putty 友好格式。在winscp.com中,/keygen
参数有助于进行此转换。
- 应用
/keygen
参数,后跟密钥的当前路径。 - 包括
-o
参数以指定转换密钥的输出文件路径。 - 可选择使用
-c
参数向转换后的密钥添加注释。
结论
通过这份全面的WinSCP命令行指南,再加上WinSCP GUI指南,您现在可以充分利用WinSCP的功能。无论是文件传输、命令执行、脚本运行还是密钥转换,WinSCP都是任何IT专业人士的多功能工具。
您打算如何将WinSCP整合到您的工作流程中?分享您的想法和经验!