Linux 操作系统 018-远程文件传输工具

2023-12-22 10:57:11

Linux 操作系统 018-远程文件传输工具

本节关键字:Linux、操作系统、远程操作、文件传输、ftp、ssh、scp、sftp
本节相关指令:ftp、ssh、scp、sftp

FTP

FTP介绍

ftp命令用来设置文件系统相关功能。ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里介绍Linux ftp命令的一些常用命令。

FTP语法

ftp [选项] [参数]

选项

-d:详细显示指令执行过程,便于排错或分析程序执行的情况;
-i:关闭互动模式,不询问任何问题;
-g:关闭本地主机文件名称支持特殊字符的扩充特性;
-n:不使用自动登录;
-v:显示指令执行过程。

参数

主机:指定要连接的FTP服务器的主机名或ip地址。
FTP建立连接

例如,连接IP为192.168.203.50的主机:

$ ftp 192.168.203.50
FTP关闭连接
ftp> bye
ftp> exit
ftp> quit
FTP下载文件

下载 readme.txt 文件

ftp> get readme.txt
ftp> mget *.txt
FTP上传文件

上传 readme.txt 文件,可以上传多个文件

ftp> put /path/readme.txt 
ftp> mput *.txt 

FTP应用实例

ftp> ascii                              # 设定以ASCII方式传送文件(缺省值) 
ftp> bell                               # 每完成一次文件传送,报警提示. 
ftp> binary                             # 设定以二进制方式传送文件. 
ftp> bye                                # 终止主机FTP进程,并退出FTP管理方式. 
ftp> case                               # 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母. 
ftp> cd                                 # 同UNIX的CD命令. 
ftp> cdup                               # 返回上一级目录. 
ftp> chmod                              # 改变远端主机的文件权限. 
ftp> close                              # 终止远端的FTP进程,返回到FTP命令状态, 所有的宏定义都被删除. 
ftp> delete                             # 删除远端主机中的文件. 
ftp> dir [remote-directory] [local-file]# 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件. 
ftp> get [remote-file] [local-file]     # 从远端主机中传送至本地主机中. 
ftp> help [command]                     # 输出命令的解释. 
ftp> lcd                                # 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录. 
ftp> ls [remote-directory] [local-file] # 同DIR. 
ftp> macdef                             # 定义宏命令. 
ftp> mdelete [remote-files]             # 删除一批文件. 
ftp> mget [remote-files]                # 从远端主机接收一批文件至本地主机. 
ftp> mkdir directory-name               # 在远端主机中建立目录. 
ftp> mput local-files                   # 将本地主机中一批文件传送至远端主机. 
ftp> open host [port]                   # 重新建立一个新的连接. 
ftp> prompt                             # 交互提示模式. 
ftp> put local-file [remote-file]       # 将本地一个文件传送至远端主机中. 
ftp> pwd                                # 列出当前远端主机目录. 
ftp> quit                               # 同BYE. 
ftp> recv remote-file [local-file]      # 同GET. 
ftp> rename [from] [to]                 # 改变远端主机中的文件名. 
ftp> rmdir directory-name               # 删除远端主机中的目录. 
ftp> send local-file [remote-file]      # 同PUT. 
ftp> status                             # 显示当前FTP的状态. 
ftp> system                             # 显示远端主机系统类型. 
ftp> user user-name [password] [account]# 重新以别的用户名登录远端主机. 
ftp> ? [command]         # 同HELP. [command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。
ftp> !                                  # 从 ftp 子系统退出到外壳。

SFTP

SFTP介绍

与 FTP 协议相比,在几乎所有情况下,SFTP 都比 FTP 更可靠,因为它具有潜在的安全功能并且能够搭载 SSH 连接。 FTP 是一种不安全的协议,只能在有限的情况下或您信任的网络上使用。

SFTP语法

基本语法

sftp [选项] [参数]

常用选项

选项说明
-B指定传输文件时缓冲区的大小;
-l使用ssh协议版本1;
-b指定批处理文件;
-C使用压缩;
-o指定ssh选项;
-F指定ssh配置文件;
-R指定一次可以容忍多少请求数;
-v升高日志等级

参数

用户名@IP或主机名

SFTP建立连接

默认情况下,SFTP 使用 SSH 协议进行身份验证并建立安全连接。 因此,可以使用 SSH 中存在的相同身份验证方法。

例如:使用用户名Jeck与IP为192.168.203.66的主机建立连接。

$ sftp Jeck@192.168.203.66
SFTP关闭连接
sftp> exit 
sftp> bye
SFTP下载文件

示例1,从远程主机上下载文件 /home/Jeck/remote.txt

sftp> get /home/Jeck/remote.txt

示例2,从远程主机上下载文件/home/Jeck/remote.txt并重命名为/home/remote_local.txt

sftp> get /home/Jeck/remote.txt /home/remote_local.txt

示例3,从远程主机上下载目录/home/dir

sftp> get -r /home/dir

示例4,从远程主机上下载目录/home/dir,并维护适当的权限和访问时间

sftp> get -Pr /home/dir
SFTP上传文件

示例1,将本地文件/home/local.txt上传到远程主机的/home路径下

sftp> put /home/local.txt /home

示例2,将本地目录/home/localdir上传到远程主机的/home路径下

sftp> put -r /home/localdir /home
SFTP应用实例
sftp> help
sftp> ?
sftp> help
Available commands:
bye                                # Quit sftp
cd 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 sftp
get [-afpR] remote [local]         # Download file
help                               # Display this help text
lcd path                           # Change local directory to 'path'
lls [ls-options [path]]            # Display local directory listing
lmkdir path                        # Create local directory
ln [-s] oldpath newpath            # Link remote file (-s for symlink)
lpwd                               # Print local working directory
ls [-1afhlnrSt] [path]             # Display remote directory listing
lumask umask                       # Set local umask to 'umask'
mkdir path                         # Create remote directory
progress                           # Toggle display of progress meter
put [-afpR] local [remote]         # Upload file
pwd                                # Display remote working directory
quit                               # Quit sftp
reget [-fpR] remote [local]        # Resume download file
rename oldpath newpath             # Rename remote file
reput [-fpR] local [remote]        # Resume upload file
rm path                            # Delete remote file
rmdir path                         # Remove remote directory
symlink oldpath newpath            # Symlink remote file
version                            # Show SFTP version
!command                           # Execute 'command' in local shell
!                                  # Escape to local shell
?                                  # Synonym for help

提示:如果需要访问本地文件系统,则可以在上述命令之前添加字母l(local)来指向本地文件系统,例如:lpwd、lls、lcd等

SSH

SSH介绍

SSH(Secure Shell)是一种网络协议,用于在不安全的网络中安全地进行远程登录和执行命令。它提供了加密的通信通道,可以防止敏感信息在传输过程中被窃取或篡改。在Linux系统中,SSH是一种常用的远程管理工具,可以通过命令行界面远程连接到其他计算机,并执行各种操作。

SSH语法

ssh [选项] [用户名@]IP或主机名

常用选项

选项说明
-C对所有数据请求进行压缩传输
-v打开调试模式
-p指定端口
-l指定用户
-b绑定源地址
-t强制伪终端分配
SSH服务操作

SSH服务的启动、停止和重启命令如下

# /etc/init.d/ssh start
# /etc/init.d/ssh stop
# /etc/init.d/ssh restart

systemctl start sshd
systemctl stop sshd
systemctl restart sshd
SSH建立连接

例如,与IP为192.168.203.66的主机建立远程连接

$ ssh username@192.168.203.66

如果需要调用图形界面,需要添加选项 -X

$ ssh -X username@192.168.203.66
或
$ ssh username@192.168.203.66 -X
SSH关闭连接
$ exit
公钥密钥的使用

1、生成密钥对

$ ssh-keygen -t rsa

-t 表示类型选项,这里采用rsa加密算法,执行结束后会在用户家目录下生成一个.ssh目录,包含私钥文件id_rsa和公钥文件id_rsa.pub

2、将公钥复制到远程主机中

$ ssh-copy-id Jeck@192.168.203.66

完成上述步骤后,以后再登录远程主机就不需要密码了

SSH应用实例

示例1,一条语句完成远程执行服务器命令

$ ssh -t Jeck@192.168.203.66 'cd /home/Jeck/test && ls -al && exec $SHELL'

示例2,使用远程主机不中断的运行指定程序

$ nohup test.sh &

示例3,通过远程主机1跳转到远程主机2

$ ssh -t Jeck@192.168.203.66 ssh Nacy@192.168.50.66

SCP

SCP介绍

scp(Secure Copy)命令是用于通过 ssh 协议进行远程服务与本地数据传输的命令,使用 scp 在跨两端传输数据是比较安全的,推荐使用。

SCP语法

scp [选项] [参数]

scp常用选项

选项说明
-1使用协议ssh1
-2使用协议ssh2
-4使用IPv4寻址
-6使用IPv6寻址
-B使用批处理模式(传输过程中不询问传输口令或短语)
-C使用压缩
-p保留源文件的修改时间,访问时间和访问权限
-q不显示传输进度条
-v显示进度,可以用来查看调试连接、验证和配置问题
-r递归复制整个目录
-P port 指定传输数据的端口
SCP下载文件

示例1,将远程主机的/home/remote.txt文件拷贝到本地/home/目录下

$ scp Jeck@192.168.203.66:/home/remote.txt /home

示例2,将远程主机data目录下的多个文件拷贝到本地/home/myfile目录下

$ scp root@192.168.1.100:/data/\{test1.txt,test2.cpp,test3.bin,test.*\} /home/myfile/

示例3,指定端口拷贝

$ scp -P 233 root@192.168.1.100:/data/test.txt /home/myfile/

示例4,将远程主机的/home/remotedir目录拷贝到本地/home目录下

$ scp -r root@hostname:/home/remotedir/ /home
SCP上传文件
$ scp /path/filename username@hostname:/path/

多文件拷贝:

$ scp /home/myfile/test1.txt test2.cpp test3.bin test.* root@192.168.1.100:/data/

目录拷贝

$ scp  -r local_dir username@hostname:remote_dir

文章来源:https://blog.csdn.net/qq_45157350/article/details/135034753
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。