Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过ssh传输文件_Ssh_File Transfer - Fatal编程技术网

通过ssh传输文件

通过ssh传输文件,ssh,file-transfer,Ssh,File Transfer,在ssh协议中,是否有文件传输机制? 我在一个已有的代码库上工作,这个代码库已经有ssh工具代码。现在我需要通过ssh连接传输文件。如果ssh协议已经支持它,我就不必将scp的东西集成到其中 谢谢 编辑: Im使用基于openssh的C、ssh代码。 我必须以编程方式传输文件,由于某些限制,不能使用外部程序/命令。程序应该逐块传输远程主机上任意大小的文件,并动态处理该块。然后,区块数据被丢弃。sftp和scp都是现有的“安全”文件传输方法,但您的答案将取决于应用程序使用的技术堆栈。你没有提到你是

在ssh协议中,是否有文件传输机制?
我在一个已有的代码库上工作,这个代码库已经有ssh工具代码。现在我需要通过ssh连接传输文件。如果ssh协议已经支持它,我就不必将scp的东西集成到其中

谢谢

编辑:
Im使用基于openssh的C、ssh代码。

我必须以编程方式传输文件,由于某些限制,不能使用外部程序/命令。程序应该逐块传输远程主机上任意大小的文件,并动态处理该块。然后,区块数据被丢弃。

sftp和scp都是现有的“安全”文件传输方法,但您的答案将取决于应用程序使用的技术堆栈。你没有提到你是否在使用C#、PHP或其他语言,或者你的应用程序运行在哪种机器上。这些问题对你将得到的答案有很大影响。

试着看看

编辑:您可能还发现在ssh上运行rsunc很有用

echo "hello" | ssh user@SSHHost "cat - > /tmp/file"
我只需读取文件,在SSH中进行管道传输,然后在SSHHost服务器上的/tmp/文件中进行写入。

Rsync可以提供帮助:

rsync usernamea@server.com:filename remotefilename
传统的方式是“tar-to-tar”,它在复制和保存权限方面做得很好。当双方都有rsync时,rsync在很大程度上已经被rsync所取代

ssh test@example.org "cd mydir && tar cfp - mysubdir" | tar xvfp -
执行此操作时,请小心稀疏文件等。大多数tar都有一个选项,可以在这种过程中保留文件洞

To download: remote -> local
scp user@remote_host:remote_file local_file 

To upload: local -> remote
scp local_file user@remote_host:remote_file

对于多个文件,在scp之后包括
-r

我必须通过编程传输文件,因为存在一些内存/硬盘限制。+1对于好的'ol days:-)我意识到这篇文章很旧,但是,您可以使用ssh密钥以可编写脚本的方式完成这项工作:不幸的是,rsync的可能副本似乎必须在两台机器上都可用。请记住,双方都必须能够使用rsync