sftp
- SFTP(SSH文件传输协议)是一种安全的文件传输协议。它运行在SSH协议上。它支持SSH的完整安全性和身份验证功能。
- SFTP已经几乎取代传统的FTP的文件传输协议,并正在迅速取代FTP / S。它提供了这些协议提供的所有功能,但是更安全,更可靠,配置更简单。基本上没有理由再使用旧协议了。
- SFTP还可以防止密码嗅探和中间人攻击。它使用加密和加密哈希函数来保护数据的完整性,并同时使服务器和用户都可以使用。
SFTP端口号
- SFTP端口号是 SSH端口22
- 它基本上只是一个SSH服务器。只有用户使用SSH登录到服务器后,才能启动SFTP协议。
- 服务器上没有公开的单独SFTP端口。无需为防火墙配置另一个漏洞。
适用于Windows和Mac的SFTP客户端
有许多SFTP客户端实现。许多SSH客户端支持SFTP。
适用于Linux,Windows和Mac的SFTP服务器
SFTP服务器通常是SSH实现的一部分。大多数组织将Tectia SSH或OpenSSH用作服务器。两者都附带了SFTP服务器实现。
- Windows版Tectia SSH服务器
- 适用于IBM z / OS大型机的Tectia SSH服务器
- OpenSSH -Linux和Unix的开源服务器
- FileZilla-Windows的免费sftp服务器
命令
# 连接远程服务器
sftp root@192.168.25.140
# 查看当前服务器路径
lpwd
# 查看远程服务器路径[默认用户家目录]
pwd
# 上传文件
put [本地文件的地址] [服务器上文件存储的位置]
# 下载文件
get [服务器上文件存储的位置] [本地要存储的位置]
# 退出
exit和quit
!command
-
这个是指在linux上执行command这个命令, 比如!ls是列举linux当前目录下的东东, !rm a.txt是删除linux当前目录下的a.txt文件。
-
这个命令非常非常有用, 因为在sftp> 后输入命令, 默认值针对sftp服务器的, 所以执行rm a.txt删除的是sftp服务器上的a.txt文件, 而非本地的linux上的a.txt文件。
使用
$ sftp root@192.168.0.21
The authenticity of host '192.168.0.21 (192.168.0.21)' can't be established.
ECDSA key fingerprint is SHA256:+3EGhCZO4X2XzLff9ocdL4EBQTlYjGikILgXh6azGAo.
ECDSA key fingerprint is MD5:be:78:3e:fc:a5:39:0c:89:39:96:7b:62:1b:21:26:76.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.21' (ECDSA) to the list of known hosts.
root@192.168.0.21's password:
Connected to 192.168.0.21.
sftp> lpwd
Local working directory: /home/oceanstar/CLionProjects/ssh2_learn/build
sftp> pwd
Remote working directory: /root
sftp> ls //远程目录
miniconda3 test3 web
sftp> !ls // 本地目录
a.txt CMakeCache.txt CMakeFiles cmake_install.cmake Makefile ssh2_learn
sftp> put a.txt
这个是把linux当前目录下的a.txt文件上传到sftp服务器的当前目录下。
sftp> get a.txt
Fetching /root/test3/a.txt to a.txt
这个是把sftp服务器当前目录下的a.txt文件下载到linux当前目录下。
- 如果你试图使用get或mget命令复制一个文件夹,sftp会抱怨它
Cannot download non-regular file: /root/test3/
- 这是因为基本的sftp客户端不允许递归复制
- 然而,scp程序将允许您这样做。
- scp命令将不允许您查看sftp服务器上的内容,因此需要使用sftp客户机定位文件。
- 注意:scp命令是一个Unix命令,需要在Unix提示符下运行。不能在SFTP客户端内。
sftp> get test3/ ./
Fetching /root/test3/ to ./test3
Cannot download non-regular file: /root/test3/
scp copy_from copy_to