Linux sftp命令介绍
sftp(Secure File Transfer Protocol)是SSH协议的一部分,用于在加密的SSH传输上访问、管理和传输文件。与传统的FTP协议相比,sftp提供了FTP的所有功能,但它更安全,更容易配置。不像SCP,它只支持文件传输,sftp允许你在远程文件上执行一系列操作,并且可以恢复文件传输。
Linux sftp命令适用的Linux版本
sftp命令在大多数Linux发行版中都是可用的,它是openssh-client软件包的一部分。如果你的Linux系统没有安装openssh-client,你可以使用以下命令来安装它:
- 在基于Debian的系统(如Ubuntu)上,使用apt命令:
- 在基于Red Hat的系统(如CentOS)上,使用yum或dnf命令:
或者
Linux sftp命令的基本语法
sftp命令的基本语法如下:
其中:
- options是一些可选的参数,用于指定sftp的行为,如端口号、密钥文件、密码等。
- user是远程服务器的用户名,如果省略,则默认为本地用户名。
- host是远程服务器的主机名或IP地址。
- file是要传输的远程文件或目录的路径,可以指定多个文件或目录,用空格分隔。
- dir是要传输的远程目录的路径,必须以斜杠结尾。
- batchfile是一个包含sftp命令的文本文件,用于批量执行sftp操作。
Linux sftp命令的常用选项或参数说明
sftp命令支持很多选项或参数,用于控制sftp的行为和输出。下表列出了一些常用的选项或参数,以及它们的含义和用法。
选项或参数 | 含义和用法 |
---|---|
-P port | 指定远程服务器的SSH端口号,如果不指定,默认为22。 |
-i identity_file | 指定用于身份验证的私钥文件,如果不指定,默认为~/.ssh/id_rsa。 |
-b batchfile | 指定一个包含sftp命令的文本文件,用于批量执行sftp操作。 |
-C | 启用压缩传输,可以提高传输速度,但会增加CPU负载。 |
-v | 启用详细模式,显示sftp的调试信息。 |
-q | 启用安静模式,不显示任何信息。 |
-h | 显示sftp的帮助信息,并退出。 |
Linux sftp命令的实例
下面是一些使用sftp命令的实例,展示了sftp的常见用法和操作。
实例1:连接到远程服务器
要连接到远程服务器,使用sftp命令,后面跟上远程服务器的用户名和主机名或IP地址,例如:
如果你使用的是密码认证,你会被提示输入远程用户的密码。如果你使用的是密钥认证,你可能会被提示输入密钥的密码,或者直接连接成功。连接成功后,你会看到一个sftp提示符,表示你已经进入了sftp交互模式,可以执行sftp命令了,例如:
实例2:传输文件和目录
要从远程服务器下载文件或目录,使用get命令,后面跟上远程文件或目录的路径,以及可选的本地路径,例如:
这个命令会将远程服务器上的/home/linuxize/file.txt文件下载到本地系统的/tmp/file.txt文件。如果省略本地路径,文件会被下载到当前本地目录。
要上传文件或目录到远程服务器,使用put命令,后面跟上本地文件或目录的路径,以及可选的远程路径,例如:
这个命令会将本地系统上的/tmp/file.txt文件上传到远程服务器的/home/linuxize/file.txt文件。如果省略远程路径,文件会被上传到当前远程目录。
实例3:列出文件和目录
要列出远程服务器上的文件和目录,使用ls命令,后面可以跟上一些选项和路径,例如:
这个命令会以长格式列出远程服务器上的/home/linuxize目录的内容。如果省略路径,会列出当前远程目录的内容。
要列出本地系统上的文件和目录,使用lls命令,后面可以跟上一些选项和路径,例如:
这个命令会以长格式列出本地系统上的/tmp目录的内容。如果省略路径,会列出当前本地目录的内容。
实例4:切换目录
要切换远程服务器上的目录,使用cd命令,后面跟上要切换的目录的路径,例如:
这个命令会将当前远程目录切换到/var/log目录。
要切换本地系统上的目录,使用lcd命令,后面跟上要切换的目录的路径,例如:
这个命令会将当前本地目录切换到/tmp目录。
实例5:创建和删除目录
要在远程服务器上创建一个目录,使用mkdir命令,后面跟上要创建的目录的路径,例如:
这个命令会在远程服务器上的/home/linuxize目录下创建一个名为test的目录。
要在本地系统上创建一个目录,使用lmkdir命令,后面跟上要创建的目录的路径,例如:
这个命令会在本地系统上的/tmp目录下创建一个名为test的目录。
要在远程服务器上删除一个目录,使用rmdir命令,后面跟上要删除的目录的路径,例如:
这个命令会在远程服务器上删除/home/linuxize/test目录,注意,目录必须是空的,否则会失败。
实例6:重命名和删除文件
要在远程服务器上重命名一个文件,使用rename命令,后面跟上原文件名和新文件名,例如:
这个命令会将远程服务器上的/home/linuxize/file.txt文件重命名为/home/linuxize/new_file.txt文件。
要在本地系统上重命名一个文件,使用lrename命令,后面跟上原文件名和新文件名,例如:
这个命令会将本地系统上的/tmp/file.txt文件重命名为/tmp/new_file.txt文件。
要在远程服务器上删除一个文件,使用rm命令,后面跟上要删除的文件的路径,例如:
这个命令会在远程服务器上删除/home/linuxize/file.txt文件。
要在本地系统上删除一个文件,使用lrm命令,后面跟上要删除的文件的路径,例如:
这个命令会在本地系统上删除/tmp/file.txt文件。
实例7:批量执行sftp命令
要批量执行sftp命令,你可以创建一个包含sftp命令的文本文件,然后使用-b选项来指定该文件,例如:
这个命令会读取batchfile.txt文件中的sftp命令,并依次执行它们。batchfile.txt文件的内容可以是类似于以下的格式:
这个文件中的命令会依次切换到/home/linuxize目录,下载file.txt文件,上传new_file.txt文件,删除file.txt文件,重命名new_file.txt文件为file.txt文件。
实例8:使用端口号和密钥文件
如果远程服务器的SSH服务不是使用默认的22端口,或者你想使用指定的密钥文件来进行身份验证,你可以使用-P和-i选项来指定端口号和密钥文件,例如:
这个命令会使用2222端口和~/.ssh/id_rsa_custom密钥文件来连接到远程服务器。
实例9:使用压缩传输和详细模式
如果你想提高传输速度,或者查看sftp的调试信息,你可以使用-C和-v选项来启用压缩传输和详细模式,例如:
这个命令会在传输数据时使用压缩算法,并显示sftp的详细输出。
实例10:使用安静模式和帮助信息
如果你想减少sftp的输出,或者查看sftp的帮助信息,你可以使用-q和-h选项来启用安静模式和帮助信息,例如:
这个命令会连接到远程服务器,但不显示任何信息。
这个命令会显示sftp的帮助信息,并退出。
实例11:使用通道转发
如果你想通过一个中间服务器来连接到另一个远程服务器,你可以使用ssh的通道转发功能,例如:
这个命令会在后台创建一个SSH连接到192.168.1.2服务器,并将本地的10022端口转发到192.168.1.3服务器的22端口。
然后,你可以使用sftp命令,指定本地的10022端口来连接到192.168.1.3服务器,例如:
这个命令会通过本地的10022端口来连接到192.168.1.3服务器。
Linux sftp命令的注意事项
使用sftp命令时,有一些注意事项需要了解,下面列出了一些常见的注意事项:
- sftp命令只能在支持SSH协议的远程服务器上使用,如果远程服务器没有安装或启动SSH服务,你会收到类似于以下的错误信息:
- sftp命令需要你有远程服务器上的文件或目录的访问权限,如果你没有足够的权限,你会收到类似于以下的错误信息:
- sftp命令不支持通配符(如*或?)来匹配多个文件或目录,如果你使用通配符,你会收到类似于以下的错误信息:
- 如果你在本地系统上没有安装sftp命令,你会收到类似于以下的错误信息:
如果你遇到这个问题,你可以按照上面的方法安装openssh-client软件包,或者使用其他的文件传输工具,如scp或rsync。
评论区