如何使用 SFTP 与远程服务器进行交互
FTP,即文件传输协议,是一种流行的、未加密的在两个远程系统之间传输文件的方法。 截至 2022 年,由于缺乏安全性,它已被大多数现代软件弃用,并且大多只能用于历史遗留下来应用程序。
SFTP 是安全文件传输协议,是一种内置在 SSH 中的单独协议,可以通过安全连接实现 FTP 命令。 通常,它可以在仍然需要 FTP 服务器的任何环境中直接使用。
在几乎所有情况下,SFTP 都比 FTP 更可靠,因为它具有底层的安全特性和搭载 SSH 连接的能力。 FTP 是一种不安全的协议,只能在有限的情况下或在您信任的网络上使用。
尽管 SFTP 已集成到许多图形工具中,但我们将通过其交互式命令行界面演示如何使用它。
如何连接 SFTP
默认情况下,SFTP 使用 SSH 协议进行身份验证并建立安全连接。 因此,可以使用与 SSH 相同的身份验证方法。
尽管我们可以默认使用密码进行身份验证,但我们建议您创建 SSH 密钥并将您的公钥传输到需要访问的任何系统。 这更加安全,从长远来看可以节省时间。关于 SSH密钥的设置,可以参考我们的 如何创建Git SSH 密钥
尽管我们可以默认使用密码进行身份验证,但我们建议您创建 SSH 密钥并将您的公钥传输到需要访问的任何系统。 这更加安全,从长远来看可以节省时间。
如果您可以使用 SSH 连接到计算机,那么就已经完成了使用 SFTP 管理文件所需的所有必要要求。 使用以下命令测试 SSH 访问:
$ ssh username@your_server_ip_or_remote_hostname
如果能连接上,可以输入以下命令退出:
$ exit
现在我们可以通过使用以下命令来建立 SFTP 会话:
$ sftp username@your_server_ip_or_remote_hostname
这样我们将可以连接远程系统,终端的提示符将更改为 SFTP 提示。
sftp>
如果正在使用自定义 SSH 端口(不是默认端口 22),则可以按如下方式打开 SFTP 会话:
$ sftp -oPort=custom_port username@your_server_ip_or_remote_hostname
这将通过我们指定的端口将连接到远程系统。
在 SFTP 中获得帮助
首先要学习的最有用的命令是 help 命令。 我们可以使用这个命令查看其他 SFTP 命令的使用方式。
sftp> help
或者
sftp> ?
这将显示可用命令的列表:
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp grp path Change group of file 'path' to 'grp'
chmod mode path Change permissions of file 'path' to 'mode'
chown own path Change owner of file 'path' to 'own'
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path'
exit Quit sftp
get [-Ppr] remote [local] Download file
help Display this help text
lcd path Change local directory to 'path'
. . .
我们将分三部分来介绍一些命令。
使用 SFTP 浏览文件系统
我们可以使用许多功能类似于它们的 shell 的命令来浏览远程系统的文件层次结构。
首先,让我们通过找出我们当前在远程系统上的哪个目录来定位自己。 就像在典型的 shell 会话中一样,我们可以使用以下命令来获取当前目录:
sftp> pwd
输出如下所示
Remote working directory: /home/demouser
我们可以用另一个熟悉的命令查看远程系统当前目录的内容:
sftp> ls
输出如下所示
Summary.txt info.html temp.txt testDirectory
请注意,SFTP 界面中可用的命令并不是完全能使用 shell 语法中的命令,并且功能不丰富。 但是,它们确实实现了一些更重要的可选项,例如将 -la 添加到 ls 后面可以查看更多文件元数据和权限:
sftp> ls -la
输出结果如下所示
drwxr-xr-x 5 demouser demouser 4096 Aug 13 15:11 .
drwxr-xr-x 3 root root 4096 Aug 13 15:02 ..
-rw------- 1 demouser demouser 5 Aug 13 15:04 .bash_history
-rw-r--r-- 1 demouser demouser 220 Aug 13 15:02 .bash_logout
-rw-r--r-- 1 demouser demouser 3486 Aug 13 15:02 .bashrc
drwx------ 2 demouser demouser 4096 Aug 13 15:04 .cache
-rw-r--r-- 1 demouser demouser 675 Aug 13 15:02 .profile
要进入另一个目录,我们可以使用以下命令:
sftp> cd testDirectory
我们现在可以遍历远程文件系统,但是如果我们需要访问本地文件系统怎么办? 我们可以通过在命令前面加上一个表示本地的 l
来将命令指向本地文件系统。
到目前为止讨论的所有命令都有本地对等的命令。 我们可以打印本地工作目录:
sftp> lpwd
输出如下所示
Local working directory: /Users/demouser
我们可以列出本地机器上当前目录的内容:
sftp> lls
输出如下
Desktop local.txt test.html
Documents analysis.rtf zebra.html
我们还可以在本地系统上更改要与之交互的目录:
sftp> lcd Desktop
在下一篇文章中我们介绍SFTP如何与远程服务器传输文件
相关文章
在 Git 中使用 SSH 密钥克隆仓库或分支
发布时间:2023/04/04 浏览次数:74 分类:Git
-
你可以在本教程中使用 SSH 密钥进行 Git 克隆 - 在 Git 中设置 SSH,在 GitHub 中更新 SSH 公钥,并使用选项 - 仅克隆特定分支、选择的位置或仅克隆最近的提交。
Git push 使用 SSH 密钥
发布时间:2023/03/30 浏览次数:131 分类:Git
-
SSH 代表 Secure Shell。 它是为我们提供 SSH 网络协议访问证书的密钥。它提供对无保证开放网络上引擎之间的远程服务器的访问。 它用于传输数据、文件和网络管理,并提供从源头访问远程服务器
Linux iptables:如何添加防火墙规则(以允许 SSH 为例)
发布时间:2022/10/23 浏览次数:238 分类:操作系统
-
本文介绍如何使用 iptables -A(附加)命令添加 iptables 防火墙规则。
如何在 Linux 上设置反向 SSH 隧道
发布时间:2022/10/22 浏览次数:227 分类:操作系统
-
反向 SSH 是一种可用于从外部访问系统(位于防火墙后面)的技术。如大家所知,SSH 是一种支持网络节点之间加密通信的网络协议。 使用此协议,我们可以进行安全的远程登录、从/到远
3 步使用 ssh-keygen 和 ssh-copy-id 执行无密码 SSH 登录
发布时间:2022/10/22 浏览次数:159 分类:操作系统
-
如本文所述,我们可以使用 ssky-keygen 和 ssh-copy-id 通过 3 个简单的步骤登录到远程 Linux 服务器而无需输入密码。
如何在没有密码的情况下从 SSH2 到 OpenSSH 执行 SSH 和 SCP
发布时间:2022/10/22 浏览次数:185 分类:操作系统
-
在我们之前的文章中,我们讨论了如何设置基于 ssh 密钥的身份验证以在以下三种情况下执行 ssh 和 scp 无需密码:OpenSSH 到 OpenSSH;OpenSSH 到 SSH2;SSH2 到 SSH2。
从 openSSH 到 SSH2 的基于 SSH 密钥的身份验证设置
发布时间:2022/10/22 浏览次数:106 分类:操作系统
-
之前的文章(openSSH 到 openSSH 设置,SSH2 到 SSH2 设置)解释了如何在相同版本的 ssh 上设置基于密钥的身份验证,以在不输入密码的情况下执行 ssh 和 scp。 本文介绍如何在不同版本的 SS