Ale*_*rds 3 command-line sftp scp chroot
我正在尝试自动化应用程序部署,作为我需要将文件上传到服务器的一部分。我已经为 SFTP 服务器创建了一个最小用户并配置了 chroot,但我不知道如何上传非交互式文件。
目前我正在做 scp myfile buildUser@myserver.com:newBuilds/
我试过sftp buildUser@myserver.com myfile(newBuilds是 chroot 目录)但这没有上传任何东西,但它确实连接了。
支持这种方法而不使用的原因scp是限制 scp 访问要困难得多(根据我所了解的信息)。
如果您使用 OpenSSH 服务器,则 chroot 适用于 SCP 和 SFTP。
所以我相信你的问题是无关紧要的。
无论如何,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)
scp, 代替sftp. 大多数服务器都支持两者。实际上OpenSSHscp 从8.7开始就支持SFTP协议。从OpenSSH 9.0开始,它甚至默认使用 SFTP。在 8.7 到 8.9 中,必须通过-s参数选择 SFTP。请参阅我对已经提到的Single line sftp fromterminal 的回答。您可以像这样将内联命令传递给 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)