在 Windows 上,我使用 FileZilla 通过 sftp 在我的 WordPress 网站上上传/下载文件,同时使用 ssh 密钥。
现在 Linux 是我的主要操作系统。上个月 FileZilla 客户端在 Ubuntu 16.04 上运行良好,但现在每次启动它都会崩溃。我在网上搜索,发现很多用户都遇到了这种情况。不幸的是,如果我们问 FileZilla 支持人员,他们只有一个答案:
Ubuntu 16.04 是旧操作系统,请使用 17.10 或 Debian 最新版本。
我不想使用 17.10。因此,我正在寻找 Linux 的 FileZilla 客户端替代品,我可以将其用作带有 ssh 密钥的 sftp 客户端。
我找到了 gFTP(这是一个老程序,我不确定它有多安全?),我还发现我可以使用 Ubuntu 文件管理器连接到我的服务器。使用 Nautilus 或 Caja 连接服务器是个好主意吗?
实际上,我不想在单击文件 > 连接到服务器时出现的对话框中输入我的用户名/密码,而是想使用我的.ppk
密钥。如何在 Nautilus 或 Caja 中添加它?
答案1
使用 Nautilus
您可以使用 Nautilus 中的选项,Connect to Server
如下图所示。
- 如果您需要找到已挂载目录的命令行路径,请使用此处介绍的方法之一:FTP 网络连接的 CLI 路径。
第一个例子——
sftp://victoria-pass/home/tri
使用预定义的主持人名为victoria-pass
并挂载home/
远程用户名为 的目录tri
。要使用此方法,您应该为本地 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
第二个示例——展示如何在不使用预定义文件的情况下使用自定义 ssh 端口连接到远程 ssh(sftp)服务器。
sftp://[email protected]:1111/home/tri
~/.ssh/config
这种方法的主要缺点是,如果没有认证文件,则
~/.ssh/id_rsa
需要通过命令提前提供ssh-add
。例如,如果认证文件名为file.pem
:ssh-add /full/path/to/the/authentication/file.pem
我认为您应该每次重新启动本地机器时都执行此操作,或者应该在文件中包含上述命令
~/.profile
。
使用gFTP
以下是如何设置 gFTP 以使用 SSH 密钥的步骤。
在里面FTP 菜单点击优先;
去SSH 选项卡;
填写字段SSH 额外参数具有此值:
-o IdentityFile=/home/<your user>/.ssh/id_rsa
<user name>
随你改变真实用户名。或者使用:-o IdentityFile=~/.ssh/id_rsa
在 gFTP 的主窗口选择中SSH2作为连接类型;
输入目标主持人姓名,或知识产权地址;
设置 SSH港口目标机器(如果它不是默认的-
22
);进入用户用于 SSH 连接;
输入你的 SSH 密钥经过短语(如果有的话);
打Enter。
使用 SSHFS
您可以通过命令行工具挂载远程目录(或整个文件系统)sshfs
。然后您可以根据需要“本地”操作它。这是我喜欢的方式。假设挂载目录是~/mount
,并且您想要挂载远程用户的主目录:
sshfs [email protected]:/home/<user> /home/<local-user>/mount/
或者如果你已经创建了~/.ssh/config
文件:
sshfs host-name:/home/<remote-user> /home/<local-user>/mount/
此外,您还可以创建/etc/fstab
条目 - 参考:
转换 PPK 密钥
请注意,如果您以前使用过丙酸激酶键,这意味着PuTTY 私钥,您应该对其进行转换,因为与 CloneZilla 不同,上述工具无法读取此格式。为此,您应该使用puttygen
软件包中的工具putty-tools
:
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 密钥?
- 如何使用密钥通过 PuTTY 从 Windows SSH Ubuntu
据安全部门称
虽然所有方法都使用相同的连接方法 - SSH - 但它们提供的安全性应该是等效的。来自维基百科:
安全外壳 (SSH) 是一种加密网络协议,用于在不安全的网络上安全地操作网络服务... SSH 在客户端-服务器架构中通过不安全的网络提供安全通道,将 SSH 客户端应用程序与 SSH 服务器连接起来...
SSH 使用的加密旨在通过不安全的网络(例如 Internet)提供数据的机密性和完整性... SSH 使用公钥加密来验证远程计算机,并允许其在必要时验证用户...
一种方法是使用自动生成的公私密钥对简单加密网络连接,然后使用密码验证登录......
另一种方法是使用手动生成的公钥-私钥对进行身份验证,允许用户或程序无需指定密码即可登录。在这种情况下,任何人都可以生成一对匹配的不同密钥(公钥和私钥)...