Ubuntu的Filezilla或WinSCP替代品

在Windows上我使用FileZilla在我的WordPress网站上通过sftp上传/下载文件,同时使用ssh密钥。

现在Linux是我的主要操作系统。 在过去的一个月里,FileZilla客户端在Ubuntu 16.04上工作正常,但现在每次启动它都会崩溃。 我在互联网上搜索,发现它发生在很多用户身上。 不幸的是,如果我们问他们,FileZilla支持只有一个答案:

Ubuntu 16.04是旧操作系统,使用17.10或Debian最新版本。

我不想用17.10。 所以我正在寻找Linux的FileZilla客户端替代品,我可以使用ssh key作为sftp客户端。

我发现gFTP(这是一个旧程序,我不确定它有多安全?),我还发现我可以使用Ubuntu文件管理器连接到我的服务器。 使用Nautilus或Caja时连接服务器是个好主意吗?

实际上我不想在我单击文件>连接到服务器时出现的对话框中输入我的用户名/密码,而是想使用我的.ppk密钥。 我如何在Nautilus或Caja中添加它?

使用Nautilus

您可以使用Nautilus中的Connect to Server选项Connect to Server如下图所示。

在此处输入图像描述

  • 如果需要查找已安装目录的命令行路径,请使用此处介绍的方法之一: ftp网络连接的CLI路径 。
  1. 第一个例子sftp://victoria-pass/home/tri – 使用名为victoria-pass预定义主机,并安装名为tri的远程用户的home/目录。

    要使用此方法,您应该为本地ssh客户端创建用户的配置文件。 该文件必须被称为config并放在用户家中的.ssh/目录中: ~/.ssh/config 。 根据示例,文件的内容应为:

     Host victoria-pass # this is as 'nickname' of the connection HostName victoria.org # or use the IP address IdentityFile ~/.ssh/id_rsa # or provide the fill path to another key User tri # use the actual name of the remote user Port 1111 # provide the actual port of the remote server # other parameters... # setup each another Host in the same way... 

    更改文件权限:

     chmod 600 ~/.ssh/config 

    此外,现在您应该能够通过以下命令连接到每个主机:

     ssh victoria-pass 
  2. 第二个示例 – sftp://tri@victoria.org:1111/home/tri – 显示如何连接到远程ssh(sftp)服务器而不使用带有自定义ssh端口的预定义~/.ssh/config文件。

    这种方法的主要缺点是,如果认证文件不是~/.ssh/id_rsa您应该通过命令ssh-add提前提供。 例如,如果身份validation文件名为file.pem

     ssh-add /full/path/to/the/authentication/file.pem 

    我想你应该每次重启本地机器时都这样做,或者你应该在~/.profile文件中包含上面的命令。


Usung gFTP

以下是如何设置gFTP以使用SSH密钥的步骤。

在此处输入图像描述

  1. FTP菜单中单击首选项 ;

  2. 转到SSH选项卡 ;

  3. 使用此值填写SSH Extra Params字段:

     -o IdentityFile=/home//.ssh/id_rsa 

    使用您的真实 更改 。 或使用:

     -o IdentityFile=~/.ssh/id_rsa 
  4. 在gFTP的主窗口中选择SSH2作为连接类型;

  5. 输入目标主机名或IP地址;

  6. 设置目标计算机的SSH 端口 (如果不是默认值 – 22 );

  7. 输入用户进行SSH连接;

  8. 输入您的SSH密钥的密码短语(如果有的话);

  9. 按Enter键


使用SSHFS

您可以通过命令行工具sshfs挂载远程目录(或整个文件系统)。 然后你可以按照自己的意愿“本地”操纵它。 这是我的首选方式。 假设安装目录是~/mount并且您想要挂载远程用户的主目录:

 sshfs user@host.name.or.ip:/home/ /home//mount/ 

或者,如果您已创建~/.ssh/config文件:

 sshfs host-name:/home/ /home//mount/ 

此外,您还可以创建/etc/fstab条目 – 引用:

  • 如何将sshfs命令转换为fstab条目?
  • 尽管有/ etc / fstab配置,sshfs在引导时不会自动挂载

转换PPK密钥

请注意,如果您以前使用过PPK密钥,这意味着PuTTY私钥 ,您应该转换它,因为与CloneZilla不同,上述工具无法读取此格式。 为此,您应该使用作为包putty-tools的一部分的工具puttygen

 sudo apt install putty-tools 

现在您可以通过以下方式转换密钥:

 puttygen input-key-filename.ppk -O private-openssh -o output-key-filename.pem 

感谢@steeldriver为此笔记。 以下是来源和其他一些参考资料:

  • 如何将Filezilla PPK转换为openssh sftp兼容密钥
  • 如何将PuTTY的.ppk转换为SSH密钥
  • 如何在Linux下将.ppk密钥转换为OpenSSH密钥?
  • 如何使用密钥从Windows通过PuTTY SSH Ubuntu

根据安全

虽然所有方法都使用相同的连接方法 – SSH – 但它们提供的安全性应该是等效的。 来自维基百科 :

Secure Shell(SSH)是一种加密网络协议,用于在不安全的网络上安全地运行网络服务…… SSH在客户端 – 服务器体系结构中通过不安全的网络提供安全通道,将SSH客户端应用程序与SSH服务器连接…

SSH使用的加密旨在通过不安全的网络(如Internet)提供数据的机密性和完整性…… SSH使用公钥加密对远程计算机进行身份validation,并允许其在必要时对用户进行身份validation…

一种方法是使用自动生成的公钥 – 私钥对简单地加密网络连接,然后使用密码validation登录…

另一种方法是使用手动生成的公钥 – 私钥对来执行身份validation,允许用户或程序登录而无需指定密码。 在这种情况下,任何人都可以生成一对匹配的不同密钥(公共和私有)……