SFTP 内联放置,无需交互

Ale*_*rds 3 command-line sftp scp chroot

我正在尝试自动化应用程序部署,作为我需要将文件上传到服务器的一部分。我已经为 SFTP 服务器创建了一个最小用户并配置了 chroot,但我不知道如何上传非交互式文件。

目前我正在做 scp myfile buildUser@myserver.com:newBuilds/

我试过sftp buildUser@myserver.com myfilenewBuilds是 chroot 目录)但这没有上传任何东西,但它确实连接了。

支持这种方法而不使用的原因scp是限制 scp 访问要困难得多(根据我所了解的信息)。

Mar*_*ryl 9

如果您使用 OpenSSH 服务器,则 chroot 适用于 SCP 和 SFTP。

有关说明,请参阅:
https://www.techrepublic.com/article/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/

所以我相信你的问题是无关紧要的。


无论如何,sftp(假设 OpenSSH)并不是真正为仅命令行上传而设计的。您通常使用-bswitch 来通过命令指定批处理文件put

sftp buildUser@myserver.com -b batchfile
Run Code Online (Sandbox Code Playgroud)

含有batchfile

put /local/path /remote/path
Run Code Online (Sandbox Code Playgroud)

如果您确实需要仅命令行上传,请参阅:

所以基本上,您可以使用各种形式的输入重定向,例如:

sftp buildUser@myserver.com <<< 'put /local/path /remote/path'
Run Code Online (Sandbox Code Playgroud)


dem*_*isx 5

您可以像这样将内联命令传递给 SFTP:

sftp -o PasswordAuthentication=no user@host <<END
lcd /path/to/local/dir
cd /path/to/remote/dir
put file
END
Run Code Online (Sandbox Code Playgroud)