Jak przesłać plik z wiersza polecenia za pomocą FTP lub SSH?

30

Nigdy wcześniej tego nie robiłem i tworzę skrypt powłoki bash, aby to dla mnie zrobić. Będę również łączyć się za pośrednictwem ssh, aby wykonać pewne czynności (które już wiem, jak to zrobić). Więc może istnieje sposób na przesłanie plików przez ssh, abym mógł zrobić to wszystko w jednym połączeniu?

W jaki sposób mogę to zrobić?

#!/bin/sh

cd ./files-to-upload
#upload the files
Andrzej
źródło
To nie odpowiada na to pytanie, ale może to pomóc niektórym osobom: curl.io pozwala ci przesłać plik przez bash do publicznego hostingu http (chyba przez kilka godzin)
Vincent Fenet

Odpowiedzi:

56

Możesz użyć scpdo skopiowania na zdalne urządzenie.

scp <file to upload> <username>@<hostname>:<destination path>
tangens
źródło
czy wraz z tym można przekazać hasło? Czy to także inicjuje sesję ssh? Czy mogę również uruchamiać inne polecenia?
Andrew,
2
Nie, nie możesz podać hasła. Ale możesz skonfigurować uwierzytelnianie za pomocą klucza ssh. Oznacza to, że nie uwierzytelniasz się za pomocą hasła, ale za pomocą klucza zapisanego w pliku i automatycznie przesłanego po połączeniu. I nie, nie możesz w ten sposób wykonywać innych poleceń.
Felix,
mam na myśli, czy możesz połączyć się z ssh, a następnie uruchomić scp? Czy są to osobne polecenia?
Andrew,
2
sshi scpsą różnymi poleceniami. Wprowadzenie znajduje się na stronie ssh.com/support/documentation/online/ssh/adminguide/32/…
tangens,
1
@ Felix powinien był zwrócić uwagę, że jeśli nie skonfigurowano uwierzytelniania za pomocą klucza SSH, pojawi się monit o podanie hasła . Oznacza to, że taka konfiguracja nie jest krytycznym wymogiem do korzystania z tego polecenia
np.
6

Prawdopodobnie szukasz SCP lub podobnego.

#!/bin/bash

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

oczywiście należy to dostosować do twoich upodobań. Zastąp user @ host twoimi prawdziwymi informacjami. Zostaniesz poproszony o podanie hasła do przesłania.

John T.
źródło
4

Jeśli naprawdę musisz użyć ssh (zamiast scp), możesz:

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

ale regularne SCP (jak sugestia Tangens ) jest najlepsze.

Jimmy Hedman
źródło
Używam połączenia FTp, czy możesz powiedzieć, jak przesyłać lub kopiować pliki z lokalnego na zdalny, im przy użyciu filezilli lub winscp ... muszę wyodrębnić zip lub kopię z lokalnego na zdalny
Sushivam
1

scp jest lepszą odpowiedzią, ponieważ byłby szyfrowany przez SSH.

Jeśli jednak chcesz to zrobić w stosunku do standardowego ftp, spójrz na ncftpput. Jest przeznaczony specjalnie do przesyłania pliku:

NAME ncftpput - internetowy program do przesyłania plików skryptów

SKŁADNIA ncftpput [opcje] zdalny host zdalny katalog pliki lokalne ...

DuPie
źródło
0

curl to dobry program, który obsługuje kilka protokołów.

Joe Internet
źródło
0

Gdy użyjesz polecenia scp(bezpieczna kopia), łączy się on z klientem i jeśli nie masz jeszcze zapisanego odcisku palca dla urządzenia hosta, poprosi cię o hasło hosta, w przeciwnym razie powinien automatycznie połączyć się z hostem.

David
źródło
0

W przypadku wystąpienia ec2 musisz również przekazać .pemplik,

$scp -i ~/Desktop/amazon.pem ~/Desktop/file.zip  ubuntu@ec2-54-166-128-20.compute-1.amazonaws.com:~/data/
Elavarasan
źródło