使用Filezilla和SFTP连接到Amazon EC2文件目录

386

我创建了一个AWS EC2实例,想要以最简单、最直接的方式使用FileZilla将文件上传到服务器目录。


4
那么问题是什么?如果您有SSH/SFTP凭据,只需使用FileZilla并连接到站点即可。打开“站点管理器”,添加您的站点(选择SFTP作为协议)并保存。使“站点管理器”在每次打开FileZilla时都自动打开,这样您只需要双击“站点管理器”中的项目即可。 - Shi
3
你有关于任务的任何特定问题吗? - Martin Prikryl
15个回答

872

我已经为此创建了一个视频教程。请查看:

使用FileZilla和SFTP连接到Amazon EC2文件目录,视频教程

以上视频教程的摘要:

  1. 编辑(偏好设置) > 设置 > 连接 > SFTP,点击“添加密钥文件”
  2. 浏览到.pem文件的位置并选择它。
  3. 一个消息框将会出现询问您是否同意将文件转换为ppk格式。 点击“是”,然后给文件命名并将其存储在某个地方。
  4. 如果新文件显示在密钥文件列表中,则继续进行下一步。 如果没有,请单击“添加密钥文件…”并选择转换后的文件。
  5. 文件 > 站点管理器 使用以下参数添加一个新站点:

    主机:EC2实例的公共DNS名称或服务器的公共IP地址。

    协议:SFTP

    登录类型:正常

    用户:根据文档:“对于Amazon Linux,默认用户名为ec2-user。 对于RHEL5,用户名通常为root,但可能是ec2-user。对于Ubuntu,用户名是ubuntu。对于SUSE Linux,用户名是root。 对于Debian,用户名是admin。否则,请与您的AMI提供商确认。”

    按下连接按钮 - 如果禁用密码保存,则会提示您将登录类型更改为“请求密码”。 确定后,在连接时,在密码提示中按“确定”而不输入密码即可继续进行。

注意:FileZilla会自动找到要使用的密钥,您无需在按照上述步骤导入后指定密钥。

如果您使用Cyberduck,请参考此视频

如果您遇到任何权限问题,请查看此篇文章


4
免费版的Ubuntu发行版用户名将自动设置为ubuntu。 - streak
7
除了上面提到的内容,还要确保在端口文本框中删除默认值 21(SFTP 的默认端口),因为它似乎可以使用端口 22。当我删除端口时,它开始正常工作。 - rahul
1
@Yasitha Chinthaka 我已经按照所有步骤操作,但无法连接到我的实例。这是一个在Windows Server 2012上的大型实例。任何帮助都将不胜感激。我已经在我的安全组中添加了SSH的入站规则。除了你最后发布的答案之外,是否还需要其他配置或更改? - user2363025
@Yasitha Chinthaka 我遇到了以下问题:错误:连接被拒绝。错误:无法连接到服务器。我正在尝试使用 Windows 的 ec2-user 用户,也尝试了 root 用户,但都无法连接。 - user2363025
我猜你的用户名可能有问题,应该不是ec2-user或root。阅读这篇文章,你可能会得到一些线索。首先尝试确认你的用户名。http://superuser.com/questions/811527/filezilla-ftp-to-aws-ec2-windows-server-2012-instance-failed-to-retrieve-direct - Yasitha Waduge
显示剩余9条评论

76
如果您使用了pem文件(我使用macOS/Windows用户可以按照相同步骤操作),这非常简单。
  1. 只需下载您的FileZilla(我使用macOS-下载了免费版本,已足够好)

  2. 在FileZilla中打开站点管理器(⌘S)->新建站点

输入图像描述

  1. 主机字段中填入主机名。

示例:eca-**-**-**-111.ap-southwest-9.compute.amazonaws.com

  • 选择协议为SFTP-SSH文件传输协议

  • 选择登录类型为密钥文件

  • 用户字段中输入用户名:对于我来说,是ubuntu (找到您的ssh用户)

注意:

操作系统vs用户名

Amazon - ec2-user

Centos - centos

Debian - admin或root

Fedora - ec2-user

RHEL - ec2-user或root

SUSE - ec2-user或root

Ubuntu - ubuntu或root

  1. 对于密钥文件字段,浏览您的pem文件:然后点击连接

图片描述请点开链接查看

  1. 就这些啦 :) 玩得愉快!

注意:

(记得允许来自EC2的IP地址的SSH连接),否则您将收到连接错误消息!

注意:允许您的IP通过SFTP连接到AWS实例

EC2 -> 安全组 -> SSH -> 入站规则 -> 编辑 -> 添加规则 ( SSH|TCP|22|我的IP(它会自动获取IP | 规则名称) -> 保存


我认为密钥文件已经加密,因此它只是按原样传递文件。没有加密。但是,如果您使用Filezilla进行普通身份验证,使用用户名和密码,则它们会加密密码。 - Elshan
3
很好,但我想补充一下:在“主机”输入框中,我使用了IPv4 IP地址,而不是公共主机名。这样做对我很有效。 - Bennybear
如果您无法使用.pem文件,则将其转换为.ppk文件。https://dev59.com/BXA75IYBdhLWcg3wo6pe#59491738 - U.A
1
对于Linux 2,用户是ec2-user - Santosh
1
对于使用WordPress Bitnami镜像的AWS,我的用户名是ubuntu。 - Wouter
显示剩余2条评论

23
如果有人按照所有步骤操作但没有成功,请确保您使用的是正确的用户。我一开始试图使用“ec2-user”,但实际上需要使用“ubuntu”。


我在RedHat上没有成功,用户名是"ec2-user"。 - NOTiFY
对于使用最常用的Bitnami认证WordPress安装的用户,它位于Ubuntu服务器上,因此用户名为ubuntu :) - Peter Højlund Palluth

21

确保使用22端口。Filezilla默认将SFTP设置为21端口。


阅读此内容于2023年,Filezilla SFTP的默认端口为22。 - Rinto George

9

对于Yasitha Chinthaka的答案,我只有一个小注释:

注意:FileZilla会自动识别要使用的密钥。您不需要在上述导入后指定密钥。

在我的情况中,我已经有来自其他实例的5个ppk,并且在过去我一直在使用它们(新实例的ppk位于该列表的底部)。 我添加了新实例的ppk,但无法连接到它。错误消息是:尝试次数太多。

删除未使用的ppk后,我终于能够登录该实例。

因此,Filezilla并不是那么聪明。;-)


2
这解决了我遇到的问题。感谢您发布它! - mnutsch

6
Disconnected: No supported authentication methods available (server sent: publickey)

有效的方法是使用sftp命令。

使用以下命令连接EC2实例:

sftp -i "path/to/key.pem" ec2-user@ec2-54-212-34-84.us-west-2.compute.amazonaws.com

下载文件/目录

要下载 path/to/source/file.txtpath/to/source/dir:

lcd ~/Desktop
cd path/to/source
get file.txt
get -r dir

上传文件/目录

要将localpath/to/source/file.txt~/localpath/to/source/dir上传到remotepath/to/dest

lcd localpath/to/source
cd remotepath/to/dest
put file.txt
put -r dir

Filezilla也支持SFTP。 - Elshan
filezilla 3.7也有同样的问题。对我来说,sftp命令行工具也起作用了。 - Soheil Pourbafrani
Kilian 的方法对我起作用了。FileZilla 的方法返回错误:致命错误:没有支持的身份验证方法可用(服务器发送:publickey) - Barry DeCicco

4

你可以使用任何FTP客户端。我使用的是WinSCP,它很好用。在所有这些客户端中,你都可以指定ssh安全密钥。


0

在我的情况下,Filezilla将AWS ppk文件发送到我尝试安全连接的每个其他FTP服务器。

这太疯狂了。如下所述,有一个解决方法,但很丑陋。

正如@Lucio M指出的那样,它的行为不好。

来自此讨论:https://forum.filezilla-project.org/viewtopic.php?t=30605

n0lqu:

同意。但是,考虑到我无法控制服务器的操作,是否有任何方法可以在FileZilla中指定站点应使用密码进行身份验证而不是密钥,或者反之亦然?或者告诉它首先尝试密码,然后仅在密码失败时尝试密钥?我觉得它首先尝试密钥,然后没有机会尝试密码。

botg(Filezilla管理员)回答:

没有这样的选项。

n0lqu:

这种选项能否添加,或者有没有好的解决方法可以推荐?目前我知道的唯一解决方法是从常规设置中删除该密钥,在连接到需要它的特定站点时将其添加回来,然后在完成操作后再次将其删除,以避免影响其他站点。
今天我遇到了同样的问题,通过在站点管理器中更改连接使用密码的“登录类型”,我成功解决了这个问题。我可以选择“交互式”或“要求密码”(不太确定有什么区别),然后当我再次尝试连接到站点时,它会提示我输入密码,然后成功连接。 虽然这并不理想,因为这意味着每次连接都必须记住和重新输入密码,但比安装两个FileZilla实例要好得多。 我完全同意,在站点管理器中拥有如何连接到每个设置的站点的完整选项(是否使用密码、密钥等)将非常有用。 希望这对你有所帮助! Tim
另请参见: https://forum.filezilla-project.org/viewtopic.php?t=34676 所以,看起来:
对于具有密钥/密码的多个FTP站点,请使用多个Filezilla安装, 或者, 为所有服务器使用相同的ppk密钥。
我希望有一种方法可以告诉FileZilla哪个ppk适用于Site Manger中的哪个站点。

0

0

最简单和直接的方法是创建FTP登录。以下是一个小而易于理解的教程网站,可以在stackoverflow上设置FTP,只需2分钟即可完成... 在Amazon云服务器上设置FTP


1
我在StackOverflow上交叉链接了一个URL。我不认为这是外部链接,你呢? - nh-labs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接