本节关键字:Linux、操作系统、远程操作、文件传输、ftp、ssh、scp、sftp
本节相关指令:ftp、ssh、scp、sftp
ftp命令用来设置文件系统相关功能。ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里介绍Linux ftp命令的一些常用命令。
ftp [选项] [参数]
-d:详细显示指令执行过程,便于排错或分析程序执行的情况;
-i:关闭互动模式,不询问任何问题;
-g:关闭本地主机文件名称支持特殊字符的扩充特性;
-n:不使用自动登录;
-v:显示指令执行过程。
主机:指定要连接的FTP服务器的主机名或ip地址。
例如,连接IP为192.168.203.50的主机:
$ ftp 192.168.203.50
ftp> bye
ftp> exit
ftp> quit
下载 readme.txt 文件
ftp> get readme.txt
ftp> mget *.txt
上传 readme.txt 文件,可以上传多个文件
ftp> put /path/readme.txt
ftp> mput *.txt
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 子系统退出到外壳。
与 FTP 协议相比,在几乎所有情况下,SFTP 都比 FTP 更可靠,因为它具有潜在的安全功能并且能够搭载 SSH 连接。 FTP 是一种不安全的协议,只能在有限的情况下或您信任的网络上使用。
sftp [选项] [参数]
选项 | 说明 |
---|---|
-B | 指定传输文件时缓冲区的大小; |
-l | 使用ssh协议版本1; |
-b | 指定批处理文件; |
-C | 使用压缩; |
-o | 指定ssh选项; |
-F | 指定ssh配置文件; |
-R | 指定一次可以容忍多少请求数; |
-v | 升高日志等级 |
用户名@IP或主机名
默认情况下,SFTP 使用 SSH 协议进行身份验证并建立安全连接。 因此,可以使用 SSH 中存在的相同身份验证方法。
例如:使用用户名Jeck与IP为192.168.203.66的主机建立连接。
$ sftp Jeck@192.168.203.66
sftp> exit
sftp> bye
示例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
示例1,将本地文件/home/local.txt上传到远程主机的/home路径下
sftp> put /home/local.txt /home
示例2,将本地目录/home/localdir上传到远程主机的/home路径下
sftp> put -r /home/localdir /home
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(Secure Shell)是一种网络协议,用于在不安全的网络中安全地进行远程登录和执行命令。它提供了加密的通信通道,可以防止敏感信息在传输过程中被窃取或篡改。在Linux系统中,SSH是一种常用的远程管理工具,可以通过命令行界面远程连接到其他计算机,并执行各种操作。
ssh [选项] [用户名@]IP或主机名
选项 | 说明 |
---|---|
-C | 对所有数据请求进行压缩传输 |
-v | 打开调试模式 |
-p | 指定端口 |
-l | 指定用户 |
-b | 绑定源地址 |
-t | 强制伪终端分配 |
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
例如,与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
$ exit
$ ssh-keygen -t rsa
-t 表示类型选项,这里采用rsa加密算法,执行结束后会在用户家目录下生成一个.ssh目录,包含私钥文件id_rsa和公钥文件id_rsa.pub
$ ssh-copy-id Jeck@192.168.203.66
完成上述步骤后,以后再登录远程主机就不需要密码了
示例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(Secure Copy)命令是用于通过 ssh 协议进行远程服务与本地数据传输的命令,使用 scp 在跨两端传输数据是比较安全的,推荐使用。
scp [选项] [参数]
选项 | 说明 |
---|---|
-1 | 使用协议ssh1 |
-2 | 使用协议ssh2 |
-4 | 使用IPv4寻址 |
-6 | 使用IPv6寻址 |
-B | 使用批处理模式(传输过程中不询问传输口令或短语) |
-C | 使用压缩 |
-p | 保留源文件的修改时间,访问时间和访问权限 |
-q | 不显示传输进度条 |
-v | 显示进度,可以用来查看调试连接、验证和配置问题 |
-r | 递归复制整个目录 |
-P port 指定传输数据的端口 |
示例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 /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