Command line 无交互的SFTP内联put

Command line 无交互的SFTP内联put,command-line,sftp,scp,chroot,Command Line,Sftp,Scp,Chroot,我正在尝试自动化应用程序部署,作为其中的一部分,我需要将文件上载到服务器。我已经为SFTP服务器创建了一个最小用户并配置了chroot,但我无法确定如何上传非交互式文件 目前我正在做scpmyfilebuildUser@myserver.com:newBuilds/ 我尝试了sftpbuildUser@myserver.commyfile(newBuilds是chroot目录),但它没有上传任何内容,只是连接了 支持此方法而不使用scp的原因是限制scp访问要困难得多(根据我所了解的信息)。如果

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

目前我正在做
scpmyfilebuildUser@myserver.com:newBuilds/

我尝试了
sftpbuildUser@myserver.commyfile
newBuilds
是chroot目录),但它没有上传任何内容,只是连接了


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

如果您使用的是OpenSSH服务器,则chrooting适用于scp和SFTP

有关说明,请参阅:

所以我认为你的问题无关紧要


无论如何,
sftp
(假设使用OpenSSH)并不是专门为命令行上传而设计的。您通常使用
-b
开关来使用
put
命令指定批处理文件

sftp buildUser@myserver.com -b batchfile
包含以下内容的批处理文件:

put myfile
如果确实只需要命令行上传,请参阅:

  • (或者简单地使用,而不是
    sftp

我从另一个角度解决了这个问题。我尝试为
sftp
配置
chroot
,但无法实现。我的解决方案是使用
rssh
,只允许
scp
。这对我来说很有效,因为我试图限制的用户是已知且经过身份验证的用户。

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

sftp -o PasswordAuthentication=no user@host <<END
lcd /path/to/local/dir
cd /path/to/remote/dir
put file
END
sftp-o PasswordAuthentication=nouser@host