如何使用 FTP 或 SSH 从命令行上传文件?

And*_*rew 39 ftp ssh bash command-line

我以前从未这样做过,我正在创建一个 bash shell 脚本来为我做这件事。我还将通过 ssh 连接来做一些事情(我已经知道怎么做)。那么也许有一种方法可以通过 ssh 上传文件,以便我可以在一个连接中完成所有操作?

我怎样才能做到这一点?

#!/bin/sh

cd ./files-to-upload
#upload the files
Run Code Online (Sandbox Code Playgroud)

tan*_*ens 78

您可以使用scp复制到远程机器。

scp <file to upload> <username>@<hostname>:<destination path>
Run Code Online (Sandbox Code Playgroud)

  • 不,您不能传递密码。但是您可以设置 ssh 密钥身份验证。这意味着您不通过密码进行身份验证,而是通过存储在文件中并在连接时自动传输的密钥进行身份验证。再一次,你不能用这个执行其他命令。 (2认同)
  • `ssh` 和 `scp` 是不同的命令。有关介绍,请参阅 http://www.ssh.com/support/documentation/online/ssh/adminguide/32/Introduction_to_SSH_Secure_Shell.html (2认同)
  • 作品!`scp ~/Desktop/image.jpg root@server.com:/var/tmp` (2认同)

Joh*_*n T 6

您可能正在寻找 SCP 或类似内容。

#!/bin/bash

cd ./files-to-upload
scp * user@host:/path/to/upload/files/to
Run Code Online (Sandbox Code Playgroud)

当然,这必须根据您的喜好进行调整。用您的真实信息替换 user@host。系统将提示您输入密码以进行上传。


Jim*_*man 5

如果你真的必须使用 ssh(而不是 scp),你可以这样做:

for filename in *; do
  cat $filename | ssh user@host "cd /path/to/upload/files/to; cat - > $filename"
done
Run Code Online (Sandbox Code Playgroud)

但常规 scp(如tangens建议)是最好的。


小智 5

对于 ec2 实例,您还必须传递该.pem文件,

$scp -i ~/Desktop/amazon.pem ~/Desktop/file.zip  ubuntu@ec2-54-166-128-20.compute-1.amazonaws.com:~/data/
Run Code Online (Sandbox Code Playgroud)