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


30

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

我怎样才能做到这一点?

#!/bin/sh

cd ./files-to-upload
#upload the files

那不能回答这个问题,但是也许对某些人有帮助:curl.io允许您通过bash将文件上传到公共http托管(我认为有效期为几个小时)
Vincent Fenet

Answers:


56

您可以scp用来复制到远程计算机。

scp <file to upload> <username>@<hostname>:<destination path>

密码也可以与此一起传递吗?另外,这是否会初始化ssh会话?我还能运行其他命令吗?
安德鲁

2
不可以,您无法通过密码。但是您可以设置ssh密钥身份验证。这意味着您不是通过密码进行身份验证,而是通过存储在文件中并在连接时自动传输的密钥进行身份验证。同样,您不能使用此命令执行其他命令。
菲利克斯(Felix)

我的意思是您可以与ssh连接,然后运行scp吗?还是它们是分开的命令?
安德鲁

2
sshscp是不同的命令。有关简介,请参见ssh.com/support/documentation/online/ssh/adminguide/32/…–
tangens

1
@Felix应该指出,如果您没有设置ssh密钥身份验证,则会提示输入密码。这意味着,具有该设置不是使用此命令的关键要求
aexl

6

您可能正在寻找SCP或类似物品。

#!/bin/bash

cd ./files-to-upload
scp * user@host:/path/to/upload/files/to

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


4

如果确实必须使用ssh(而不是scp),则可以执行以下操作:

for filename in *; do
  cat $filename | ssh user@host "cd /path/to/upload/files/to; cat - > $filename"
done

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


我正在使用FTp连接,您能告诉我如何将文件从本地传输或复制到远程吗?我正在使用filezilla或winscp ...我需要提取一个zip或从本地复制到远程
Sushivam

1

scp是更好的答案,因为它将通过SSH加密。

但是,如果确实要通过标准ftp进行操作,请查看ncftpput。它专门用于上传文件:

NAME ncftpput-脚本的Internet文件传输程序

提要ncftpput [选项]远程主机远程目录本地文件...



0

当您使用scp(安全副本)命令时,它会连接到客户端,如果您尚未为主机设备保存指纹,则会询问您输入主机密码,否则它将自动连接到我相信的主机。


0

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

$scp -i ~/Desktop/amazon.pem ~/Desktop/file.zip  ubuntu@ec2-54-166-128-20.compute-1.amazonaws.com:~/data/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.