如何使用 SCP 和 SFTP 安全地传输文件
在系统之间移动文件是 Linux 系统管理员的常规活动之一。通过网络传输数据时,一个重要的考虑因素是所用介质的安全性。有多种工具可用于此目的。
在 Red Hat Enterprise Linux (RHEL) 上,SFTP(安全文件传输协议)和 SCP(安全复制)是用于在系统之间安全地移动文件的便捷命令。作为 OpenSSH 套件的一部分,这些工具依靠安全 Shell (SSH)来传输文件。这意味着它们使用与 SSH 相同的身份验证并提供相同的安全性。
使用 SCP 复制文件
要使用 SCP 传输文件,请指定远程服务器的 IP 地址或主机名以及要复制文件或目录的目标路径。对 SCP 使用与 SSH 相同的用户名和凭据。不需要其他凭据。如果文件已存在于目标位置,SCP 将替换或覆盖内容。对目标路径使用绝对路径名也是明智之举。
要使用命令传输文件scp
,请使用以下语法:
$ scp file1 user@192.268.1.3:/home/user
此示例将file1
本地服务器复制到/home/user/
远程服务器 192.168.1.3。
如果 SSH 服务器使用不同的端口(例如 2390),则复制文件的命令如下:
$ scp -P 2390 file1 user@192.268.1.3:/home/user
注意:-P
是大写而不是小写-p
(如使用 SSH 时)。
如果公钥和私钥存储在非标准位置,则需要指定它们的路径。例如,如果私钥存储在/home/keys/id_rsa
,则命令为:
$ scp -i /home/keys/id_rsa -P 2390 file1 user@192.268.1.3:/home/user
也可以使用-r
参数复制目录。要复制名为 的目录backup
,请使用:
$ scp -r backup user@192.268.1.3:/opt/
此命令将整个backup
目录复制到/opt/backup
。请注意,您需要确保您连接的用户有权限执行您想要执行的操作。
使用 SFTP 复制文件
SFTP 是一个安全的文件传输程序,也依赖于 SSH,并且是交互式的。该工具与 FTP 类似,但它使用 SSH 端口 22。
When you initiate an SFTP connection, it connects to its destination and enters an interactive mode on the remote server. You can then transfer files using commands such as get
, put
, cd
, and rmdir
.
To establish an SFTP connection, use:
$ sftp user@192.168.1.3
You should have a command prompt similar to the one below:
sftp>
If SSH is running on an alternate port, use:
$ sftp -oPort=2390 user@192.168.1.3
When using a passwordless connection and if the private key is named differently or stored in a different location than the default, use:
$ sftp -o IdentityFile=~/.ssh/id_rsa_key user@192.168.1.3
The example above connects to 192.168.1.3 using the private key at ~/.ssh/id_rsa_key
.
What if you want to transfer the file /etc/resolv.conf
file to /etc
on the remote server? In that case, use:
$ sftp user@192.168.1.3
sftp> cd /etc
sftp> put /etc/resolv.conf
To download a file named /opt/user_list
from the remote server to the local system, do:
$ sftp user@192.168.1.3
sftp> cd /opt
sftp> get user_list
You can upload and download directories by using the -r
parameter.
To upload a directory, use:
sftp> put -r new_folder
To download a directory, use:
sftp> get -r folder_from_remoteserver
For additional options, use the sftp –help
command or consult the man pages by typing man sftp
.
Wrap up
Using secure file copy commands such as scp
and sftp
are an important part of network hardening and general security initiatives. The commands are straightforward and rely on the familiar and trusted SSH utility. Practice using both tools for a more responsible sysadmin stance.