如何使用 SFTP 安全地与远程服务器进行文件传输


在本文中,您可以了解如何设置 SFTP(安全文件传输协议),这将有助于我们将文件从本地计算机安全地传输到远程服务器。FTP(文件传输协议)是一种非常流行的方法,用于将文件从一台机器传输到另一台机器或从远程服务器传输。

SFTP 代表安全文件传输协议,是一种独立的协议,它使用 SSH 来保护连接并进行文件传输,这些文件传输遍历远程服务器和本地计算机上的文件系统。

如何使用 SFTP 连接

SFTP 使用 SSH 协议进行连接并建立安全连接以进行身份验证。尽管密码非常易于使用并设置为默认值,但我们建议创建 SSH 密钥并将公钥复制到任何需要访问的系统。这不仅可以保护连接,还可以帮助节省长期运行的时间。

在进一步使用 SFTP 之前,我们需要在不使用任何密码的情况下设置对远程机器的 ssh 访问。

创建 SSH 密钥

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
71:de:c6:b4:c4:8b:31:70:5f:bd:96:60:56:8e:74:b9 root@centos
The key's randomart image is:
+--[ RSA 2048]----+
|         . . .o+.|
|         o o.=+..|
|        . + B...+|
|         + O o E |
|         S o * . |
|               . |
|                 |
|                 |
|                 |
+-----------------+
For security the key itself is a protected using a strong passphrase, if a passphrase is used to protect their key,
the SSH-agent can be used to cache the passphrase.

现在我们需要将 ssh 密钥复制到远程主机

# ssh-copy-id [email protected]
[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
To make sure we haven't added extra keys that you weren't expecting.

要测试连接,请使用 ssh 登录到远程服务器

# ssh [email protected]
Last login: Fri Apr 15 15:18:42 2016 from 192.168.1.125

然后退出服务器并使用 SFTP 连接到服务器

# sftp [email protected]
Connecting to 192.168.1.89...
sftp>

然后提示符从 # 更改为 sftp>

了解环境的简单命令

了解远程服务器上的当前工作目录

sftp>pwd
Remote working directory: /root

列出远程服务器上的文件和文件夹

sftp>ls
Desktop               Documents
Downloads             Music
Pictures              Public
Templates             Videos

打印本地计算机的工作目录

sftp> lpwd
本地工作目录:/root

列出本地计算机文件

将远程文件传输到本地计算机

语法

sftp> get <remote file >

用法

sftp> get pdfflyer.sql
Fetching /root/pdfflyer.sql to pdfflyer.sql
/root/pdfflyer.sql 100% 1765KB 1.7MB/s 00:01

这会将远程文件复制到本地计算机的当前工作目录中

sftp> get <remotefile> <localfile>

这会将远程文件复制到当前工作目录,并将其重命名为我们在命令中指定的不同名称 <本地文件>

sftp>get -r <Directory>

要递归地复制 <目录> 中的所有文件和文件夹,我们可以使用 ' -r ' 选项

将本地文件传输到远程计算机

General Syntax:
sftp> put <localfile>
Usage:
sftp> put svn_backup.sh
Uploading svn_backup.sh to /root/svn_backup.sh
svn_backup.sh 100% 489 0.5KB/s 00:00
sftp>

要递归地将本地文件复制到远程服务器,我们可以使用 ' -r ' 选项。

sftp> put -r <Local directory>

SFTP 的简单文件操作

SFTP 允许您执行在处理文件系统时有用的所有类型的基本文件维护。我们可以从远程计算机获取文件并在本地计算机中查看文件,只需在命令前面添加 ! 。

sftp> get /etc/passwd
sftp> !less passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
......

要列出本地组,我们可以通过在开头添加 ! 来运行命令。

sftp>!less /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:
kmem:x:9:
wheel:x:10:
....

没有用于操作本地文件权限的命令,但您可以设置本地 umask,以便复制到本地系统的任何文件都具有适当的权限。

这可以通过 “lumask” 命令完成

sftp>lumask 022
Local umask: 022

SFTP 允许您使用 “lmkdir” 和 “mkdir” 在远程和本地计算机上创建目录。

sftp> bye

要退出 SFTP 会话,请使用 “exit” 或 “bye” 关闭连接。

通过以上操作,我们了解了如何使用 SFTP 将文件从本地计算机传输到远程计算机,SFTP 是一款简单但功能强大的工具,用于在远程服务器和本地计算机之间传输文件。

更新于: 2020年1月20日

2K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告