作为其中的一部分,我正在尝试自动化应用程序部署,我需要将一个文件上传到服务器。我已经为SFTP服务器创建了一个最小的用户并配置了chroot,但是我无法解决如何上传一个非交互式文件。
目前我正在做scp myfile buildUser@myserver.com:newBuilds/
我尝试了sftp buildUser@myserver.com myfile (newBuilds是chroot ),但是它没有上传任何东西,而是连接了。
支持这种访问而不使用scp的原因是,限制scp访问(根据我所了解的信息)要困难得多。
发布于 2014-04-01 07:45:52
如果您使用的是OpenSSH服务器,则色化对SCP和SFTP都有效。
关于说明,见:
所以我认为你的问题无关紧要。
无论如何,sftp (假设OpenSSH)并不是专为命令行上传而设计的.您通常使用-b开关使用put命令指定批处理文件。
sftp buildUser@myserver.com -b batchfilebatchfile包含:
put /local/path /remote/path如果您确实需要命令行上传,请参见:
因此,基本上,您可以使用各种形式的输入重定向,例如:
sftp buildUser@myserver.com <<< 'put /local/path /remote/path'scp,而不是sftp。大多数服务器都支持这两者。实际上是OpenSSH scp 支持自8.7以来的SFTP协议。因为OpenSSH 9.0在默认情况下甚至使用SFTP。在8.7到8.9中,必须通过-s参数来选择SFTP。请看我对已经提到的来自终端的单线sftp的回答。发布于 2017-11-29 14:52:01
您可以像这样将内联命令传递给SFTP:
sftp -o PasswordAuthentication=no user@host <<END
lcd /path/to/local/dir
cd /path/to/remote/dir
put file
END发布于 2014-04-01 15:49:05
我从不同的角度解决了这个问题。我尝试将chroot配置为sftp,但无法使其工作。我的解决方案是使用rssh,并且只允许scp。这对我来说是有效的,因为我试图限制的用户是已知的和经过身份验证的用户。
https://stackoverflow.com/questions/22764511
复制相似问题