软件介绍

  1. 上一篇文章中,我介绍了强大的SSH。但是SSH只是一个在命令行上运行的工具,如果只是简单的远程登录和端口转发,那自然没什么问题。但在文件传输方面,使用命令行就有点太累赘了。因此我今天来给大家推荐一款专门用于远程文件传输的工具:WinSCP
  2. WinSCP 是一个 Windows平台上的免费文件传输软件,主要用于在本地Windows计算机和远程服务器之间传输文件,支持SFTP、SCP、FTP、WebDAV和Amazon S3等。其中SFTP和SCP都是基于SSH的协议,而我们最常用的就是其中的SFTP了。
  3. SFTP(SSH File Transfer Protocol,安全文件传输协议)是一种基于 SSH(Secure Shell)的安全文件传输协议,它提供了一种加密的方式,在本地计算机和远程服务器之间传输文件,我们使用WinSCP基本上也都是使用该协议传输文件。
  4. 注意,本文章介绍的软件与SSH有较强相关性,建议先阅读我的上一篇文章:SSH | 安全访问远程主机后再来阅读本文章。

软件安装

使用Scoop安装

  1. 安装Scoop
  2. 打开终端,执行以下命令
    scoop install winscp
    

官方安装

  1. 官方网站:https://winscp.net/eng/download.php
  2. 下载安装包,一键安装即可

基本使用

  1. 打开WinSCP,一般都会弹出以下登录页面
  2. 如果没有弹出该页面,则点击新标签页,或者旁边的下拉菜单,选择远程标签页,也可以打开。
  3. 在这个登录页面上,我们可以选择文件协议(一般为SFTP即可),输入主机名(远程主机的IP地址)、连接的端口(和SSH一样,SFTP的连接端口默认为22)和想要登录的用户名和密码。
  4. 之后最下方的登录按钮就会亮起,我们可以直接点击登录。第一次登录会显示以下内容,其中的原理在我的博客文章SSH | 安全访问远程主机中有详细讲解,这里就不再赘述了,只需要点击接受即可。
  5. 不过值得注意的是,这里我们所信任的主机公钥是保存在WinSCP的配置文件中。具体是在WinSCP的安装目录下的 winscp.ini文件中,找到 [SshHostKeys]项,其中保存了所有你信任的主机公钥。
  6. 连接完成后,其界面会如下所示。左边是你本地主机的目录,右边是你远程主机的目录,你可以通过拖到文件或文件夹的方式,在两台主机之间直接拷贝文件。也可以直接在本机任何一个文件夹中,拖动文件到远程主机中实现传输。这里的文件传输都是默认使用复制,并不会影响源文件。
  7. WinSCP支持多标签页,每个标签页对应一个连接,因此可以同时连接多个远程主机,也可以通过关闭标签页来断开连接。如下图所示,本次连接标签页的标题一般是你的用户名加上远程主机的IP地址,然后我们可以点击新标签页来创建新连接。

免密登录

每次我们进行连接时,都需要重新输入用户名和密码,非常麻烦,这里介绍两种常用的免密登录的方法。

保存密码

  1. 点击新标签页,输入登录信息,点击这里的保存,然后我们可以为该连接起个容易记的别名,并且勾选保存密码,最后点击确定即可。
  2. 之后就可以发现,在登录页面的右侧会多了一个新站点,点击新站点,再点击登录,即可快速登录到远程主机,并且无需再次输入密码了。
  3. 这种方式本质上是将预置密码保存到WinSCP中,并且我们每次连接时,新标签页的名称都会以站点名称命名,比如这里就变成了abc。
  4. 以后我们想登录别的远程主机,只需要在登录页面选择新建站点,然后输入登录信息即可,之后你想不保存直接登录,还是保存为新站点都是可以的。

公私钥验证

  1. 和SSH一样,WinSCP也支持使用公私钥登录,这种方式就不需要预置密码了。其中的原理在我的博客文章SSH | 安全访问远程主机中有详细讲解,这里就不再赘述了。
  2. 还是以之前的abc为例,这里我们点击编辑,可以修改其登录信息。我们将密码删除,然后点击高级。
  3. 如下图所示点击,然后找到你之前保存公私钥的文件夹(一般是为 ~/.ssh),选择私钥文件。
  4. 此时你可能会有所疑惑,因为下面的文件夹中并没有显示私钥文件供选择,那是因为WinSCP只支持PuTTY格式(PuTTY是一个开源的SSH客户端)的私钥文件。这里我们点击右下角的过滤方式,选择所有私钥文件。此时就会正常显示公私钥文件了,然后我们选中 id_rsa文件。
  5. 此时WinSCP会弹出是否希望将OpenSSH私钥转换为PuTTY格式,选择确定,然后又会弹出一个新界面让你选择保存路径和文件名称,这样就不会影响原来的私钥文件了。你可以随意保存,这里我保存到 ~/.ssh,然后文件名称与原来的私钥文件名称保持一致,因为它们两个文件本身的后缀也不一样,很容易区分。
  6. 保存后,WinSCP会自动选择该文件,如果没选择,你也可以重新选择,这次我们选择的是 .ppk后缀的私钥文件,然后一直点击确认,退回到输入登录信息的登录界面。

  7. 这里我们选择保存,此时我们并没有保存密码,但因为我们本地选中了私钥文件(当然远程主机必须也要事先保存有公钥),我们就可以进行免密登录了,尝试登录看看吧!

其他功能

站点导入

  1. 如果之前你的 ~/.ssh/config文件中保存了很多远程主机的连接信息,那么我们可以将其一键导入到WinSCP中,避免大量重复设置。
  2. 打开新标签页的登录界面,选择左下角的工具,然后点击导入站点,选择从OpenSSH导入,此时就能看到所有在 ~/.ssh/config中保存的远程主机信息了,然后选中你想要导入的主机,直接点击确定即可。
  3. 导入后,在WinSCP登录界面中,左边会展示你已经导入的站点。由于通常我们并不会在 ~/.ssh/config文件中保存登录密码,因此你还是需要手动编辑站点进行设置。或者通过公私钥选择来进行免密登录。

工作区保存

  1. WinSCP支持多标签页,也就是一个WinSCP可以同时连接多个远程主机。此时我们可以通过保存工作区, 保存当前打开的多个标签页和目录状态,方便下次直接恢复,而无需重新输入服务器信息或手动打开多个连接。
  2. 点击WinSCP菜单栏中的标签页,选择保存工作区,此时会弹出如下的工作区保存窗口。我们可以给工作区起个别名,并且为该工作区勾选自动保存,这样打开工作区后如果做了改动,比如增加新连接等,都会被自动保存。
  3. 如果想重新打开工作区,则点击新标签页,在登录页面中就可以看到刚刚保存的工作区,选择然后打开,就会自动恢复之前的连接状态了。
  4. 即使没有保存工作区,WinSCP在退出时,仍然会提示你是否需要保存工作区。

配置导入导出

  1. WinSCP支持将配置进行导入和导出,这样就可以很方便地在另一台电脑上配置WinSCP了。
  2. 点击新标签页,进入到登录界面,选择左下角的工具,此时可以看到有导出配置和导入配置的选项。

常见问题

如何切换为中文?

  1. 选择菜单栏的 Options、选择 Preferences,点击左边的 Languages,然后在右边就可以切换语言,点击下面的OK进行保存,最后重启WinSCP即可。
  2. 如果右边没有简体中文选项,则点击下面的 Get more,此时会打开WinSCP的语言包下载网站
  3. 搜索 Simplified Chinese,选择相应的WinSCP版本进行下载。下载后是个压缩包,将其解压。
  4. 解压后,将文件拷贝到WinSCP的安装目录下,然后重新打开WinSCP,进入到语言设置,此时就会看到显示了简体中文的选项,选择它进行设置,然后再重新打开WinSCP即可。