如何使用SFTP命令安全地传输文件和文件夹?

FTP是一种非常流行的协议,称为文件传输协议,用于通过网络或internet在客户机和服务器之间传输文件。FTP存在很长一段时间,在它创建安全性时并不重要。但是现在它需要安全性,而SFTP或安全文件传输协议是在现有FTP的基础上创建的。SFTP在所有情况下都优于FTP,如果可能的话,应该使用SFTP。命令 sftp 用于连接远程SFTP服务器。它是为来自中央存储库的Linux发行版(如Ubuntu、Debian、Mint、CentOS、Fedora、RHEL、SUSE等)提供的。

null

SFTP协议有多个版本,其中 version 6 是2006年发布的最新sftp版本。作为一个简单而安全的协议,它不定期提供新功能。

SFTP命令

SFTP或SFTP交互式shell在登录SFTP服务器后提供以下命令。这些命令在交互式shell中执行。例如 exit bye 通过退出交互式shell,可以使用命令关闭SFTP会话和连接。

命令 说明
再见 退出SFTP
出口 退出SFTP
cd路径 将当前工作目录更改为路径
chgrp组路径 将路径的组所有权更改为组
chmod MOD路径 将路径的文件或文件夹权限更改为MOD
lcd路径 将本地当前工作目录更改为路径
lls路径 列出指定路径上的本地文件和文件夹
ls路径 列出指定路径上的远程文件和文件夹
mkdir路径 创建指定路径的目录
进步 上载或下载期间显示进度
密码 打印远程系统工作目录
将旧路径重命名为新路径 将远程文件或文件夹从旧路径重命名为新路径
rm路径 删除指定路径上的远程文件或文件夹
版本 显示版本信息

连接SFTP服务器

SFTP使用SSH端口和服务连接远程系统。另外,身份验证是通过SSH子系统完成的,在SSH子系统中,当前SSH用户或系统用户用于登录。与SSH连接一样,SFTP身份验证可以通过密码、SSH密钥或证书来完成。为了连接SFTP服务器,我们将提供用户名 ismail 以及IP地址 192.168.142.133 就像下面一样。

$ sftp [email protected]Connected to 192.168.142.133.sftp> sftp> sftp> 

建立连接后,将提供交互式SFTP外壳。所有SFTP命令都提供给这个shell来上传和下载文件和文件夹。默认情况下,会话创建需要密码进行身份验证,但在本例中,我们使用了证书进行身份验证。如果没有用于身份验证的证书设置,则会如下所示提示密码。

password:

基于无密码密钥的SFTP认证

与SSH一样,SFTP连接和身份验证可以使用SSH密钥完成,而无需为每个连接反复输入密码。首先,我们将当前用户公钥复制到远程SFTP服务器。但是当前用户可能没有公共和私有SSH密钥对。因此,首先我们将使用以下命令创建SSH密钥。

$ ssh-keygen Generating public/private rsa key pair.Enter file in which to save the key (/home/ismail/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ismail/.ssh/id_rsaYour public key has been saved in /home/ismail/.ssh/id_rsa.pubThe key fingerprint is:SHA256:US4aOw+rkYDBNSk+iVzFiHRZalYzfzSiFF3+72O5Vws [email protected]The key's randomart image is:+---[RSA 3072]----+|...+BOo..+.      ||.oo==.=.+o.      ||=.++ ...oo.      ||.Bo    +.o.      ||. o   = S  .     ||   . . =    .E  .||    o . .    .o o||     o      .+ o ||    .       .o+  |+----[SHA256]-----+

创建公共和私有SSH密钥对,通过提供用户名,可以使用以下命令将公共密钥传输到远程SFTP或SSH服务器。公钥将与提供的用户名匹配,并且在每个connecton中,提供的公钥将用于无密码身份验证。

$ ssh-copy-id [email protected]The authenticity of host '192.168.142.133 (192.168.142.133)' can't be established.ECDSA key fingerprint is SHA256:FERLei2YfaohZ8FN5oNc8biHDR4i1jevewwSv9expJ0.Are you sure you want to continue connecting (yes/no/[fingerprint])? yes/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys[email protected]'s password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh '[email protected]'"and check to make sure that only the key(s) you wanted were added.$

显示SFTP帮助信息

SFTP提供了与linuxshell类似的不同命令来列出文件。有关SFTP命令和说明的帮助信息可以与 ? (问号)如下。或者 help 命令的SFTP交互shell可以根据 ? .

sftp> ?Available commands:bye                                Quit sftpcd path                            Change remote directory to 'path'chgrp [-h] grp path                Change group of file 'path' to 'grp'chmod [-h] mode path               Change permissions of file 'path' to 'mode'chown [-h] own path                Change owner of file 'path' to 'own'df [-hi] [path]                    Display statistics for current directory or                                   filesystem containing 'path'exit                               Quit sftpget [-afpR] remote [local]         Download filehelp                               Display this help textlcd path                           Change local directory to 'path'lls [ls-options [path]]            Display local directory listinglmkdir path                        Create local directoryln [-s] oldpath newpath            Link remote file (-s for symlink)lpwd                               Print local working directoryls [-1afhlnrSt] [path]             Display remote directory listinglumask umask                       Set local umask to 'umask'mkdir path                         Create remote directoryprogress                           Toggle display of progress meterput [-afpR] local [remote]         Upload filepwd                                Display remote working directoryquit                               Quit sftpreget [-fpR] remote [local]        Resume download filerename oldpath newpath             Rename remote filereput [-fpR] local [remote]        Resume upload filerm path                            Delete remote filermdir path                         Remove remote directorysymlink oldpath newpath            Symlink remote fileversion                            Show SFTP version!command                           Execute 'command' in local shell!                                  Escape to local shell?                                  Synonym for help

显示SFTP版本

在此期间,SFTP协议获得了新版本的新特性。SFTP的最新版本是3,在交互式SFTP连接中,SFTP版本可以与 version 命令如下。

sftp> versionSFTP protocol version 3sftp> 

列出远程SFTP服务器上的文件

这个 ls 命令可用于列出远程服务器上的文件和文件夹。ls命令将在当前工作目录上运行。

sftp> lsDesktop       Documents     Downloads     Music         Pictures      Public        Templates     Videos        example.txt   file1.txt     file2.txt     passwd        snap          test.txt      test1         

或者,可以指定路径,以便列出指定路径上的文件和文件夹。在下面的示例中,我们将列出 Downloads .

sftp> ls Downloads/Downloads/DEBIAN                                 Downloads/sample_5184×3456.bmp                  Downloads/teamviewer_15.9.5_amd64.deb  

导航和更改目录

SFTP提供了与Linux类似的命令,以便列出当前工作目录、更改和导航本地和远程路径。我们可以使用 pwd 命令以列出远程或SFTP服务器当前的工作目录。

sftp> pwdRemote working directory: /home/ismail

还有 lpwd 命令可以用来列出本地系统当前的工作目录。就其性质而言,它不需要参数。

sftp> pwdRemote working directory: /home/ismail

可以使用 cd 命令。与Linux shell类似 . .. 可用于当前和父目录规范。

sftp> pwdRemote working directory: /home/ismailsftp> cd Downloads/sftp> pwdRemote working directory: /home/ismail/Downloads

为了更改本地系统当前工作目录 lcd 命令。Like cd命令 . .. 可用于当前目录和父目录。

sftp> lpwdLocal working directory: /home/ismailsftp> lcd Downloads/sftp> lpwdLocal working directory: /home/ismail/Downloads

从SFTP服务器下载文件和文件夹

SFTP最常用的操作和特性或者实际上是创建的原因是下载和上传文件和文件夹。这个 get 命令可用于将指定的文件和文件夹下载到本地当前工作目录。此操作将远程SFTP服务器文件安全地传输到本地目录。在下面的示例中,我们将下载名为 teamciewer_15.9.5_amd64.deb 到本地系统。

sftp> get teamviewer_15.9.5_amd64.deb Fetching /home/ismail/Downloads/teamviewer_15.9.5_amd64.deb to teamviewer_15.9.5_amd64.deb/home/ismail/Downloads/teamviewer_15.9.5_amd64.deb                0%    0     0.0KB/s   --:-- ETA

或者,我们可以用新的或不同的名称定义下载文件名。我们只需将第二个参数作为新文件名添加到get命令中。在下面的示例中,我们将下载的文件名设置为 teamviewer.deb .

sftp> get teamviewer_15.9.5_amd64.deb teamviewer.deb

默认情况下,下载的文件将放入本地当前工作目录。但我们可以通过添加下载路径和文件名来更改此路径。

sftp> get teamviewer_15.9.5_amd64.deb  MyFiles/teamviewer.deb

为了递归下载文件夹及其内容 -r 选项应在get命令之后使用。此外,我们要下载的目录将提供这是 Downloads/ 在这个例子中。我们可以在下面看到,内容是递归下载的,进度信息实时显示在屏幕上。

sftp> get -r Downloads/Fetching /home/ismail/Downloads/ to DownloadsRetrieving /home/ismail/Downloads/home/ismail/Downloads/sample_5184×3456.bmp    100%   51MB   6.3MB/s   00:08    Retrieving /home/ismail/Downloads/DEBIAN/home/ismail/Downloads/DEBIAN/conffiles          100%   40    18.4KB/s   00:00    /home/ismail/Downloads/DEBIAN/control          100% 1657   426.8KB/s   00:00    /home/ismail/Downloads/DEBIAN/prerm             100%  953    65.5KB/s   00:00    /home/ismail/Downloads/DEBIAN/preinst        100%  682   273.0KB/s   00:00    /home/ismail/Downloads/DEBIAN/postinst         100% 1125   569.0KB/s   00:00    /home/ismail/Downloads/DEBIAN/postrm          100%  789   419.6KB/s   00:00    

我们还可以通过将新名称作为get命令的第二个参数来更改下载的目录名。在下面的示例中,我们将下载的文件名设置为 MyDownloads .

sftp> get -r Downloads/ MyDownloads/

将文件上载到远程SFTP服务器

我们还可以使用SFTP将本地文件上传到远程SFTP服务器。这个 put 命令用于通过提供本地文件或文件夹名称将本地文件或文件夹上载到远程服务器。

sftp> put file1.txtUploading file1.txt to /home/ismail/file1.txtfile1.txt                                    0%    0     0.0KB/s   --:-- ETA

为了将文件夹上载到远程SFTP服务器,应该为put命令提供递归选项。 -r 用于将递归文件夹和内容上载到远程服务器。

sftp> put -r Downloads

退出SCP交互式Shell或关闭SFTP连接

可以使用 exit bye 命令如下。

sftp> sftp> sftp> exit$ $

或者使用 bye SFTP命令如下。

sftp> sftp> sftp> bye$ $ 

相关文章: 如何使用NOPASSWD在没有密码的情况下运行“sudo”命令?

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享