mog*_*gya 5 linux scp openssh sftp
正如 OpenSSH 人所说的“scp 协议已经过时”,是时候考虑后 scp 时代了。
不过sftp
好像是为了交互操作而设计的。有没有sftp
像这样使用命令的好方法scp
?意味着,如何做到这一点sftp
?
scp ./myfile myserver:/home/myfile
Run Code Online (Sandbox Code Playgroud)
或者,有什么好的scp
继任者?
sftp
命令确实是围绕命令构建的(如ftp
)。所以它不能作为scp
.
虽然您可以使用单线,如:
echo get /remote/path/file.txt /local/path.txt | sftp user@example.com
Run Code Online (Sandbox Code Playgroud)
或者
echo put /local/path.txt /remote/path/file.txt | sftp user@example.com
Run Code Online (Sandbox Code Playgroud)
您可能希望添加-b -
强制非交互模式。
有趣的是(正如@Kamil 提到的),对于下载,您还可以使用这种scp
类似语法:
sftp user@example.com:/remote/path/file.txt /local/path.txt
Run Code Online (Sandbox Code Playgroud)
(第二个参数的使用没有记录)。
sftp://
自 OpenSSH 7.7 起,也可以使用前缀,这在一定程度上修改了语法(允许对用户名和路径进行 URL 编码)。
OpenSSH 的未来版本scp
将通过参数支持 SFTP 协议-M sftp
。
PuTTY 包中还有免费/开源pscp
命令行客户端,可用于 Linux(但在 Windows 上更常用)。它具有与OpenSSH相同的命令行界面scp
。但与其名称相反scp
,它主要是SFTP客户端(如果服务器不支持 SFTP,它可以回退到 SCP)。
尽管它的名字,PSCP(像许多其他表面上的 scp 客户端一样)可以使用这些协议中的任何一个。
...
通常 PSCP 会尝试使用 SFTP 协议,并且只有在服务器上没有 SFTP 时才会回退到 SCP 协议。
您可以使用以下命令安装 PuTTY/pscp apt-get
:
sudo apt-get install -y putty
Run Code Online (Sandbox Code Playgroud)
Stack Overflow 上也有类似的问题: Single line sftp from terminal