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

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>

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.


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.


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 ...



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.


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/
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.