标签 SFTP 下的文章

如果你问那些极客系统管理员,他们会肯定的说使用 rsync 或者 scp 命令在远程服务器和本地系统之间传输文件

然而,这些都是命令行方式,并不是每个人都能用起来感到舒适。

谢天谢地的是,有一些图形化工具能够让你从远程服务器来传输文件。

FileZilla 是一个流行的、跨平台的传输文件为目的开源软件。它支持使用通过 TLS 或者 SSL 加密的 FTP 协议(FTPS),也支持借助 SSH 的 FTP 协议,以及旧的 FTP 协议。

让我展示怎样在 Linux 上安装 FileZilla 然后用它来文件传输。

那么,让我们开始吧!

在 Ubuntu 和其他 Linux 发行版上安装 FileZilla

你可以使用源码来安装,但是还是建议使用你的发行版提供的软件包。因为它是一个热门软件,它应该在许多 Linux 发行版(即便不是全部)的软件仓库中可用。请使用你的发行版的软件中心和包管理器来安装。

在 Ubuntu 上,你可以从软件中心来安装它:

FileZilla is available in the Ubuntu Software Center

你也可以使用命令行的方式来安装它:

sudo apt install filezilla

如果你看到 软件包不存在的错误,你应该 开启 Universe 仓库

一旦安装成功,打开菜单(通过按 Super 键),键入 “FileZilla”来启动它。

Start FileZilla from the system menu

使用 FileZilla

第一次使用 FileZilla 时,你将会看到如下图所示的一个界面:

Screenshot of FileZilla running

左边窗口显示来自你本地系统的文件和目录。右边窗口显示目前是空的。当你连接到远程服务器时,来自你的远程系统的文件会显示在这里。

在我向你展示之前,让我分享一下关于理解 FileZilla 图形界面重要方面的一些细节。

了解 FileZilla 图形界面

下图总体上给你展示了 FileZilla 窗口布局的不同部分。

FileZilla Window Layout | image credit

图形界面由 6 个不同的区域/窗口来组成。让我简短的给你解释一下:

1、工具栏:它有许多选项,如打开站点管理器、刷新本地和远程目录文件和文件列表、开始处理当前的文件传输队列、停止正在传输的任务并取消队列中的文件,等等。

2、快速连接栏:顾名思义,它允许你快速连接到一个远程站点,除了主机名、用户名、密码和端口之外,不需要指定更多细节。

3、消息日志:它显示了一个日志,不论你连接成功与否。错误消息标记为红色,正常消息为白色,命令是蓝色。

4 & 5、本地窗口和远程窗口:这两个窗口非常相似,除了本地窗口显示本地目录内容,并且有用来上传文件的上下文菜单;而远程窗口显示的是远程目录的内容,并有从远程目录下载到本地文件的选项。

6、传输队列:最后,传输队列窗口显示正在传输的项目的状态和它们的传输速度,以及队列中的文件和传输历史(仅限当前实例)。

使用 FileZilla 连接到 SFTP 服务器

你需要知道远程服务器的用户名、密码和 IP 地址。远程服务器也应该被设置成能够接受以这些信息进行的连接。你还需要在目标文件夹有正确的权限设置。

要新增一个 SFTP 连接,你需要打开站点管理器。有两种方式可以打开它。

在菜单栏上的“ 文件 Files ”菜单选项下有一个“ 站点管理器 Site Manager ”。或者,你可以直接点击工具栏上的“站点管理器”图标。

the Site Manager button on the toolbar

一旦站点管理器对话框弹出,点击“ 新站点 New site ”按钮,并(可选地)重命名添加到条目中的新站点。我叫我的站点为“test8”。

screenshot of the Site Manager

在右侧的“ 常规 General ”标签下,确保所使用的协议与服务器管理员为你设置的相一致。在我的例子中,我设置了一个 SFTP 服务器( 借助 SSH 通道的 FTP FTP over SSH ),因此我选择了“ SFTP - SSH 文件传输协议 SFTP – SSH File Transfer Protocol ”。

下一个字段填写远程服务器的 IP 地址。

如果你没有设置“ 端口号 Port ”,FileZilla 将假定要使用的端口号为缺省的 SSH 协议的 22 端口。

登录类型 Logon Type ”下拉列表有几个选项。在“ 常规 Normal ”登录方式下,你只需要提供用户名和密码。

如果你设置了一对公钥和私钥来验证你的 SSH 用户连接,那么可以使用“ 密钥文件授权 Key file authentication ”方式。

一旦你为远程服务器和认证填写了所有适当的细节,就可以点击底部的“ 连接 Connect ”按钮连接到站点。别担心,你刚刚建立连接的新站点将会按“登录类型”保存起来。

Remote pane being populated after a successful connection

如果你看到一个 “连接到 <主机 IP 地址>” 的状态消息,并且最近的状态消息是 “目录列表 "/" 显示成功”,说明你已经成功的连接到了远程的 SFTP 服务器(使用 SSH 协议的 FTP)。

另一个 SFTP 连接成功的标志是,当连接成功建立的时候,远程目录窗口有了很多消息。

发送文件到远程系统

你必须 确保你位于要传输文件的目录里。传输文件非常简单,只需双击文件,无需指定指定目标位置。

如果你在左边窗口双击了一个文件,它立即传输到右边科技的目录里(或者有传输任务的话,加到队列中)。

同样,从右边窗口到左边窗口也是一样双击,即从远程服务器到本地。这就是为什么本地和远程系统都要在正确的位置是非常重要的原因

此外,你也可以鼠标右击文件上传它们(或者加它们到上传队列)。目标位置总是 FileZilla 界面中显示的目录。

Transfer queue pane showing the local file name, remote destination, transfer speed and an ETA

除了方便和快捷方面,这两种上传的文件方式没有什么不同。

下载远程系统中的文件

像上传文件一样,当从远程服务器传输文件到本地时也有两种方式,但不是“上传”而是“下载”。

下载的文件将放在本地目录窗口中,也就是你当前打开的本地窗口。

你将会注意到除了发送方和接收方不同之外,下载和上传文件的行为是一样的。除非连接数受到限制,否则文件传输将是并行进行的。

总结

厉害!有了这些基础知识,你应该能够在你的计算机和服务器之间传输文件。我希望你能够学到一些新东西 : )

如果你感到这些对你有帮助,随意在评论部分留下你的问题、建议或简单的一句 “thank you”。


via: https://itsfoss.com/filezilla-ubuntu/

作者:Pratham Patel 选题:lujun9972 译者:hwlife 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

SFTP 意思是“ 安全文件传输协议 Secure File Transfer Protocol ” 或 “ SSH 文件传输协议 SSH File Transfer Protocol ”,它是最常用的用于通过 ssh 将文件从本地系统安全地传输到远程服务器的方法,反之亦然。sftp 的主要优点是,除 openssh-server 之外,我们不需要安装任何额外的软件包,在大多数的 Linux 发行版中,openssh-server 软件包是默认安装的一部分。sftp 的另外一个好处是,我们可以允许用户使用 sftp ,而不允许使用 ssh

当前发布的 Debian 10 代号为 ‘Buster’,在这篇文章中,我们将演示如何在 Debian 10 系统中在 “监狱式的” Chroot 环境中配置 sftp。在这里,Chroot 监狱式环境意味着,用户不能超出各自的家目录,或者用户不能从各自的家目录更改目录。下面实验的详细情况:

  • OS = Debian 10
  • IP 地址 = 192.168.56.151

让我们跳转到 SFTP 配置步骤,

步骤 1、使用 groupadd 命令给 sftp 创建一个组

打开终端,使用下面的 groupadd 命令创建一个名为的 sftp_users 组:

root@linuxtechi:~# groupadd sftp_users

步骤 2、添加用户到组 sftp\_users 并设置权限

假设你想创建新的用户,并且想添加该用户到 sftp_users 组中,那么运行下面的命令,

语法:

#  useradd -m -G sftp_users <用户名>

让我们假设用户名是 jonathan

root@linuxtechi:~# useradd -m -G sftp_users jonathan

使用下面的 chpasswd 命令设置密码:

root@linuxtechi:~# echo "jonathan:<输入密码>" | chpasswd

假设你想添加现有的用户到 sftp_users 组中,那么运行下面的 usermod 命令,让我们假设已经存在的用户名称是 chris

root@linuxtechi:~# usermod -G sftp_users chris

现在设置用户所需的权限:

root@linuxtechi:~# chown root /home/jonathan /home/chris/

在各用户的家目录中都创建一个上传目录,并设置正确地所有权:

root@linuxtechi:~# mkdir /home/jonathan/upload
root@linuxtechi:~# mkdir /home/chris/upload
root@linuxtechi:~# chown jonathan /home/jonathan/upload
root@linuxtechi:~# chown chris /home/chris/upload

注意: 像 Jonathan 和 Chris 之类的用户可以从他们的本地系统上传文件和目录。

步骤 3、编辑 sftp 配置文件 /etc/ssh/sshd\_config

正如我们已经陈述的,sftp 操作是通过 ssh 完成的,所以它的配置文件是 /etc/ssh/sshd_config,在做任何更改前,我建议首先备份文件,然后再编辑该文件,接下来添加下面的内容:

root@linuxtechi:~# cp /etc/ssh/sshd_config /etc/ssh/sshd_config-org
root@linuxtechi:~# vim /etc/ssh/sshd_config
......
#Subsystem      sftp    /usr/lib/openssh/sftp-server
Subsystem       sftp    internal-sftp

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory %h
  ForceCommand internal-sftp
......

保存并退出文件。

为使上述更改生效,使用下面的 systemctl 命令来重新启动 ssh 服务:

root@linuxtechi:~# systemctl restart sshd

在上面的 sshd_config 文件中,我们已经注释掉了以 Subsystem 开头的行,并添加了新的条目 Subsystem sftp internal-sftp 和新的行。而

Match Group sftp_users –> 它意味着如果用户是 sftp_users 组中的一员,那么将应用下面提到的规则到这个条目。

ChrootDierctory %h –> 它意味着用户只能在他们自己各自的家目录中更改目录,而不能超出他们各自的家目录。或者换句话说,我们可以说用户是不允许更改目录的。他们将在他们的目录中获得监狱一样的环境,并且不能访问其他用户的目录和系统的目录。

ForceCommand internal-sftp –> 它意味着用户仅被限制到只能使用 sftp 命令。

步骤 4、测试和验证 sftp

登录到你的 sftp 服务器的同一个网络上的任何其它的 Linux 系统,然后通过我们放入 sftp_users 组中的用户来尝试 ssh 和 sftp 服务。

[root@linuxtechi ~]# ssh root@linuxtechi
root@linuxtechi's password:
Write failed: Broken pipe
[root@linuxtechi ~]# ssh root@linuxtechi
root@linuxtechi's password:
Write failed: Broken pipe
[root@linuxtechi ~]#

以上操作证实用户不允许 ssh ,现在使用下面的命令尝试 sftp

[root@linuxtechi ~]# sftp root@linuxtechi
root@linuxtechi's password:
Connected to 192.168.56.151.
sftp> ls -l
drwxr-xr-x    2 root     1001         4096 Sep 14 07:52 debian10-pkgs
-rw-r--r--    1 root     1001          155 Sep 14 07:52 devops-actions.txt
drwxr-xr-x    2 1001     1002         4096 Sep 14 08:29 upload

让我们使用 sftp 的 get 命令来尝试下载一个文件:

sftp> get devops-actions.txt
Fetching /devops-actions.txt to devops-actions.txt
/devops-actions.txt                                                                               100%  155     0.2KB/s   00:00
sftp>
sftp> cd /etc
Couldn't stat remote file: No such file or directory
sftp> cd /root
Couldn't stat remote file: No such file or directory
sftp>

上面的输出证实我们能从我们的 sftp 服务器下载文件到本地机器,除此之外,我们也必须测试用户不能更改目录。

让我们在 upload 目录下尝试上传一个文件:

sftp> cd upload/
sftp> put metricbeat-7.3.1-amd64.deb
Uploading metricbeat-7.3.1-amd64.deb to /upload/metricbeat-7.3.1-amd64.deb
metricbeat-7.3.1-amd64.deb                                                                        100%   38MB  38.4MB/s   00:01
sftp> ls -l
-rw-r--r--    1 1001     1002     40275654 Sep 14 09:18 metricbeat-7.3.1-amd64.deb
sftp>

这证实我们已经成功地从我们的本地系统上传一个文件到 sftp 服务中。

现在使用 winscp 工具来测试 sftp 服务,输入 sftp 服务器 IP 地址和用户的凭证:

在 “Login” 上单击,然后尝试下载和上传文件:

现在,在 upload 文件夹中尝试上传文件:

上面的窗口证实上传是完好地工作的,这就是这篇文章的全部。如果这些步骤能帮助你在 Debian 10 中使用 chroot 环境配置 SFTP 服务器s,那么请分享你的反馈和评论。


via: https://www.linuxtechi.com/configure-sftp-chroot-debian10/

作者:Pradeep Kumar 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

通过 SSH 和 SFTP 协议,我们能够访问其他设备,有效而且安全的传输文件等等。

几年前,我决定配置另外一台电脑,以便我能在工作时访问它来传输我所需要的文件。要做到这一点,最基本的一步是要求你的网络提供商(ISP)提供一个固定的地址。

有一个不必要但很重要的步骤,就是保证你的这个可以访问的系统是安全的。在我的这种情况下,我计划只在工作场所访问它,所以我能够限定访问的 IP 地址。即使如此,你依然要尽多的采用安全措施。一旦你建立起来这个系统,全世界的人们马上就能尝试访问你的系统。这是非常令人惊奇及恐慌的。你能通过日志文件来发现这一点。我推测有探测机器人在尽其所能的搜索那些没有安全措施的系统。

在我设置好系统不久后,我觉得这种访问没什么大用,为此,我将它关闭了以便不再为它操心。尽管如此,只要架设了它,在家庭网络中使用 SSH 和 SFTP 还是有点用的。

当然,有一个必备条件,这个另外的电脑必须已经开机了,至于电脑是否登录与否无所谓的。你也需要知道其 IP 地址。有两个方法能够知道,一个是通过浏览器访问你的路由器,一般情况下你的地址格式类似于 192.168.1.254 这样。通过一些搜索,很容易找出当前是开机的并且接在 eth0 或者 wifi 上的系统。如何识别你所要找到的电脑可能是个挑战。

更容易找到这个电脑的方式是,打开 shell,输入 :

ifconfig

命令会输出一些信息,你所需要的信息在 inet 后面,看起来和 192.168.1.234 类似。当你发现这个后,回到你要访问这台主机的客户端电脑,在命令行中输入 :

ssh [email protected]

如果要让上面的命令能够正常执行,gregp 必须是该主机系统中正确的用户名。你会被询问其密码。如果你键入的密码和用户名都是正确的,你将通过 shell 环境连接上了这台电脑。我坦诚,对于 SSH 我并不是经常使用的。我偶尔使用它,我能够运行 dnf 来更新我所常使用电脑之外的其它电脑。通常,我用 SFTP :

sftp [email protected]

我更需要用简单的方法来把一个文件传输到另一个电脑。相对于闪存棒和额外的设备,它更加方便,耗时更少。

一旦连接建立成功,SFTP 有两个基本的命令,get,从主机接收文件 ;put,向主机发送文件。在连接之前,我经常在客户端移动到我想接收或者传输的文件夹下。在连接之后,你将处于一个顶层目录里,比如 home/gregp。一旦连接成功,你可以像在客户端一样的使用 cd,改变你在主机上的工作路径。你也许需要用 ls 来确认你的位置。

如果你想改变你的客户端的工作目录。用 lcd 命令( 即 local change directory 的意思)。同样的,用 lls 来显示客户端工作目录的内容。

如果主机上没有你想要的目录名,你该怎么办?用 mkdir 在主机上创建一个新的目录。或者你可以将整个目录的文件全拷贝到主机 :

put -r thisDir/

这将在主机上创建该目录并复制它的全部文件和子目录到主机上。这种传输是非常快速的,能达到硬件的上限。不像在互联网传输一样遇到网络瓶颈。要查看你能在 SFTP 会话中能够使用的命令列表:

man sftp

我也能够在我的电脑上的 Windows 虚拟机内用 SFTP,这是配置一个虚拟机而不是一个双系统的另外一个优势。这让我能够在系统的 Linux 部分移入或者移出文件。而我只需要在 Windows 中使用一个客户端就行。

你能够使用 SSH 或 SFTP 访问通过网线或者 WIFI 连接到你路由器的任何设备。这里,我使用了一个叫做 SSHDroid 的应用,能够在被动模式下运行 SSH。换句话来说,你能够用你的电脑访问作为主机的 Android 设备。近来我还发现了另外一个应用,Admin Hands,不管你的客户端是平板还是手机,都能使用 SSH 或者 SFTP 操作。这个应用对于备份和手机分享照片是极好的。


via: https://opensource.com/article/18/10/ssh-sftp-home-network

作者:Geg Pittman 选题:lujun9972 译者:singledo 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在一开始的设计中,FTP(文件传输协议)就是不安全的,意味着它不会加密两台机器之间传输的数据以及用户的凭据。这使得数据和服务器安全面临很大威胁。

在这篇文章中,我们会介绍在 CentOS/RHEL 7 以及 Fedora 中如何在 FTP 服务器中手动启用数据加密服务;我们会介绍使用 SSL/TLS 证书保护 VSFTPD(Very Secure FTP Daemon)服务的各个步骤。

前提条件:

在我们开始之前,要注意本文中所有命令都以 root 用户运行,否则,如果现在你不是使用 root 用户控制服务器,你可以使用 sudo 命令 去获取 root 权限。

第一步:生成 SSL/TLS 证书和密钥

1、 我们首先要在 /etc/ssl 目录下创建用于保存 SSL/TLS 证书和密钥文件的子目录:

# mkdir /etc/ssl/private

2、 然后运行下面的命令为 vsftpd 创建证书和密钥并保存到一个文件中,下面会解析使用的每个选项。

  1. req - 是 X.509 Certificate Signing Request (CSR,证书签名请求)管理的一个命令。
  2. x509 - X.509 证书数据管理。
  3. days - 定义证书的有效日期。
  4. newkey - 指定证书密钥处理器。
  5. rsa:2048 - RSA 密钥处理器,会生成一个 2048 位的密钥。
  6. keyout - 设置密钥存储文件。
  7. out - 设置证书存储文件,注意证书和密钥都保存在一个相同的文件:/etc/ssl/private/vsftpd.pem。
# openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048

上面的命令会让你回答以下的问题,记住使用你自己情况的值。

Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:tecmint
Email Address []:[email protected]

第二步:配置 VSFTPD 使用 SSL/TLS

3、 在我们进行任何 VSFTPD 配置之前,首先开放 990 和 40000-50000 端口,以便在 VSFTPD 配置文件中分别定义 TLS 连接的端口和被动端口的端口范围:

# firewall-cmd --zone=public --permanent --add-port=990/tcp
# firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
# firewall-cmd --reload

4、 现在,打开 VSFTPD 配置文件并在文件中指定 SSL 的详细信息:

# vi /etc/vsftpd/vsftpd.conf

找到 ssl_enable 选项把它的值设置为 YES 激活使用 SSL,另外,由于 TSL 比 SSL 更安全,我们会使用 ssl_tlsv1_2 选项让 VSFTPD 使用更严格的 TLS:

ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO

5、 然后,添加下面的行来定义 SSL 证书和密钥文件的位置:

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

6、 下面,我们要阻止匿名用户使用 SSL,然后强制所有非匿名用户登录使用安全的 SSL 连接进行数据传输和登录过程中的密码发送:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7、 另外,我们还可以添加下面的选项增强 FTP 服务器的安全性。当选项 require_ssl_reuse 被设置为 YES 时,要求所有 SSL 数据连接都会重用 SSL 会话;这样它们会知道控制通道的主密码。

因此,我们需要把它关闭。

require_ssl_reuse=NO

另外,我们还要用 ssl_ciphers 选项选择 VSFTPD 允许用于加密 SSL 连接的 SSL 算法。这可以极大地限制那些尝试发现使用存在缺陷的特定算法的攻击者:

ssl_ciphers=HIGH

8、 现在,设置被动端口的端口范围(最小和最大端口)。

pasv_min_port=40000
pasv_max_port=50000

9、 选择性启用 debug_ssl 选项以允许 SSL 调试,这意味着 OpenSSL 连接诊断会被记录到 VSFTPD 日志文件:

debug_ssl=YES

保存所有更改并关闭文件。然后让我们重启 VSFTPD 服务:

# systemctl restart vsftpd

第三步:用 SSL/TLS 连接测试 FTP 服务器

10、 完成上面的所有配置之后,像下面这样通过在命令行中尝试使用 FTP 测试 VSFTPD 是否使用 SSL/TLS 连接:

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>

验证 FTP SSL 安全连接

验证 FTP SSL 安全连接

从上面的截图中,我们可以看到这里有个错误提示我们 VSFTPD 只允许用户从支持加密服务的客户端登录。

命令行并不会提供加密服务因此产生了这个错误。因此,为了安全地连接到服务器,我们需要一个支持 SSL/TLS 连接的 FTP 客户端,例如 FileZilla。

第四步:安装 FileZilla 以便安全地连接到 FTP 服务器

11、 FileZilla 是一个现代化、流行且重要的跨平台的 FTP 客户端,它默认支持 SSL/TLS 连接。

要在 Linux 上安装 FileZilla,可以运行下面的命令:

--------- On CentOS/RHEL/Fedora --------- 
# yum install epel-release filezilla
--------- On Debian/Ubuntu ---------
$ sudo apt-get install  filezilla   

12、 当安装完成后(或者你已经安装了该软件),打开它,选择 File => Sites Manager 或者按 Ctrl + S 打开 Site Manager 界面。

点击 New Site 按钮添加一个新的站点/主机连接详细信息。

在 FileZilla 中添加新 FTP 站点

在 FileZilla 中添加新 FTP 站点

  1. 下一步,像下面这样设置主机/站点名称、添加 IP 地址、定义使用的协议、加密和登录类型(使用你自己情况的值):
Host:  192.168.56.10
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over   #recommended 
Logon Type: Ask for password            #recommended 
User: username

在 Filezilla 中添加 FTP 服务器详细信息

在 Filezilla 中添加 FTP 服务器详细信息

14、 然后点击 Connect,再次输入密码,然后验证用于 SSL/TLS 连接的证书,再一次点击 OK 连接到 FTP 服务器:

验证 FTP SSL 证书

验证 FTP SSL 证书

到了这里,我们应该使用 TLS 连接成功地登录到了 FTP 服务器,在下面的界面中检查连接状态部分获取更多信息。

通过 TLS/SSL 连接到 FTP 服务器

通过 TLS/SSL 连接到 FTP 服务器

15、 最后,在文件目录尝试 从本地传输文件到 FTP 服务器,看 FileZilla 界面后面的部分查看文件传输相关的报告。

使用 FTP 安全地传输文件

使用 FTP 安全地传输文件

就是这些。记住 FTP 默认是不安全的,除非我们像上面介绍的那样配置它使用 SSL/TLS 连接。在下面的评论框中和我们分享你关于这篇文章/主题的想法吧。


作者简介:

Aaron Kili 是一个 Linux 和 F.O.S.S 的爱好者,Linux 系统管理员,网络开发员,目前也是 TecMint 的内容创作者,他喜欢和电脑一起工作,并且坚信共享知识。


via: http://www.tecmint.com/secure-vsftpd-using-ssl-tls-on-centos/

作者:Aaron Kili 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

SSH 文件传输协议 SSH File transfer protocol (SFTP)也称为 通过安全套接层的文件传输协议 File Transfer protocol via Secure Socket Layer , 以及 FTPS 都是最常见的安全 FTP 通信技术,用于通过 TCP 协议将计算机文件从一个主机传输到另一个主机。SFTP 和 FTPS 都提供高级别文件传输安全保护,通过强大的算法(如 AES 和 Triple DES)来加密传输的数据。

但是 SFTP 和 FTPS 之间最显着的区别是如何验证和管理连接。

FTPS

FTPS 是使用安全套接层(SSL)证书的 FTP 安全技术。整个安全 FTP 连接使用用户 ID、密码和 SSL 证书进行身份验证。一旦建立 FTPS 连接,FTP 客户端软件将检查目标 FTP 服务器证书是否可信的。

如果证书由已知的证书颁发机构(CA)签发,或者证书由您的合作伙伴自己签发,并且您的信任密钥存储区中有其公开证书的副本,则 SSL 证书将被视为受信任的证书。FTPS 所有的用户名和密码信息将通过安全的 FTP 连接加密。

以下是 FTPS 的优点和缺点:

优点:

  • 通信可以被人们读取和理解
  • 提供服务器到服务器文件传输的服务
  • SSL/TLS 具有良好的身份验证机制(X.509 证书功能)
  • FTP 和 SSL 支持内置于许多互联网通信框架中

缺点:

  • 没有统一的目录列表格式
  • 需要辅助数据通道(DATA),这使得难以通过防火墙使用
  • 没有定义文件名字符集(编码)的标准
  • 并非所有 FTP 服务器都支持 SSL/TLS
  • 没有获取和更改文件或目录属性的标准方式

SFTP

SFTP 或 SSH 文件传输协议是另一种安全的安全文件传输协议,设计为 SSH 扩展以提供文件传输功能,因此它通常仅使用 SSH 端口用于数据传输和控制。当 FTP 客户端软件连接到 SFTP 服务器时,它会将公钥传输到服务器进行认证。如果密钥匹配,提供任何用户/密码,身份验证就会成功。

以下是 SFTP 优点和缺点:

优点:

  • 只有一个连接(不需要 DATA 连接)。
  • FTP 连接始终保持安全
  • FTP 目录列表是一致的和机器可读的
  • FTP 协议包括操作权限和属性操作,文件锁定和更多的功能。

缺点:

  • 通信是二进制的,不能“按原样”记录下来用于人类阅读,
  • SSH 密钥更难以管理和验证。
  • 这些标准定义了某些可选或推荐的选项,这会导致不同供应商的不同软件之间存在某些兼容性问题。
  • 没有服务器到服务器的复制和递归目录删除操作
  • 在 VCL 和 .NET 框架中没有内置的 SSH/SFTP 支持。

对比

大多数 FTP 服务器软件这两种安全 FTP 技术都支持,以及强大的身份验证选项。

但 SFTP 显然是赢家,因为它适合防火墙。SFTP 只需要通过防火墙打开一个端口(默认为 22)。此端口将用于所有 SFTP 通信,包括初始认证、发出的任何命令以及传输的任何数据。

FTPS 通过严格安全的防火墙相对难以实现,因为 FTPS 使用多个网络端口号。每次进行文件传输请求(get,put)或目录列表请求时,需要打开另一个端口号。因此,必须在您的防火墙中打开一系列端口以允许 FTPS 连接,这可能是您的网络的安全风险。

支持 FTPS 和 SFTP 的 FTP 服务器软件:

  1. Cerberus FTP 服务器
  2. FileZilla - 最著名的免费 FTP 和 FTPS 服务器软件
  3. Serv-U FTP 服务器

via: http://www.techmixer.com/ftps-sftp/

作者:Techmixer.com 译者:Yuan0302 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

sFTP(安全文件传输程序)是一种安全的交互式文件传输程序,其工作方式与 FTP(文件传输协议)类似。 然而,sFTP 比 FTP 更安全;它通过加密 SSH 传输处理所有操作。

它可以配置使用几个有用的 SSH 功能,如公钥认证和压缩。 它连接并登录到指定的远程机器,然后切换到交互式命令模式,在该模式下用户可以执行各种命令。

在本文中,我们将向你展示如何使用 sFTP 上传/下载整个目录(包括其子目录和子文件)。

如何在 Linux 中使用 sFTP 传输文件/文件夹

默认情况下,SFTP 协议采用和 SSH 传输协议一样的方式建立到远程服务器的安全连接。虽然,用户验证使用类似于 SSH 默认设置的密码方式,但是,建议创建和使用 SSH 无密码登录,以简化和更安全地连接到远程主机。

要连接到远程 sftp 服务器,如下建立一个安全 SSH 连接并创建 SFTP 会话:

$ sftp [email protected]

登录到远程主机后,你可以如下运行交互式的 sFTP 命令:

sftp> ls            #list directory 
sftp> pwd           #print working directory on remote host
sftp> lpwd          #print working directory on local host
sftp> mkdir uploads     #create a new directory

Run sFTP Commands on Remote Linux

  • Linux 主机上运行 sFTP 命令*

如何使用 sFTP 上传文件夹

要将整个目录上传到远程 Linux 主机中,请使用 put 命令。但是,如果目录名称不存在于远程主机上的工作目录中,你将收到错误,如下面的屏幕截图所示。

因此,首先在远程主机上创建一个具有相同名称的目录,然后从本地主机上传它,-r 参数允许拷贝子目录和子文件:

sftp> put -r  Tecmint.com-articles
sftp> mkdir Tecmint.com-articles
sftp> put -r Tecmint.com-articles

Upload Directory using SFTP

使用 sFTP 上传文件夹

要保留修改时间、访问时间以及被传输的文件的模式,请使用 -p 标志。

sftp> put -pr Tecmint.com-articles

如何使用 sFTP 下载文件夹

要从远程 Linux 主机下载整个 fstools-0.0 文件夹到本机中,如下所示使用 get 命令带上 -r 标志:

sftp> get -r fstools-0.0

Download Directory using sFTP

使用 sFTP 下载目录

如果文件夹已经下载完成了,接着查看本机的工作目录。

要退出 sFTP shell,输入:

sftp> bye
或者
sftp> exit

此外,阅读这篇 sFTP 命令和使用技巧

请注意,为了防止用户访问远程主机上的整个文件系统,出于安全原因,你可以使用 chroot Jail 将 sFTP 用户限制到其主目录中。

就是这样了!在本文中,我们向你展示了如何使用 sFTP 上传/下载整个目录。使用下面的评论栏向我们提供你对本文/主题的看法。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux 系统管理员和网络开发人员,目前是 TecMint 的内容创作者,他喜欢用电脑工作,并坚信分享知识。


via: http://www.tecmint.com/sftp-upload-download-directory-in-linux/

作者:Aaron Kili 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出