it-swarm.com.de

scp mit angegebener Portnummer

Ich versuche, eine Datei von einem Remote-Server auf meinem lokalen Computer zu scpfen. Nur Port 80 ist erreichbar.

Ich habe es versucht:

scp -p 80 [email protected]:/root/file.txt .

bekam aber diesen Fehler: cp: 80: No such file or directory

Wie gebe ich die Portnummer in einem scp-Befehl an?

636
One Two Three

Im Gegensatz zu ssh verwendet scp den Port in Großbuchstaben, um den Port anstelle des Kleinbuchstaben p festzulegen:

scp -P 80 ... # Use port 80 to bypass the firewall, instead of the scp default

Der p-Schalter in Kleinbuchstaben wird mit scp verwendet, um Zeiten und Modi zu erhalten.

Hier ist ein Auszug aus der Manpage von scp mit allen Details zu den beiden Switches und einer Erklärung, warum P für Scp in Großbuchstaben gewählt wurde:

-P Port Gibt den Port an, zu dem auf dem Remote-Host eine Verbindung hergestellt werden soll. Beachten Sie, dass diese Option mit einem 'P' geschrieben wird, da -p bereits .__ ist. reserviert für die Aufbewahrung der Zeiten und Modi der Datei in rcp (1). 

-p Behält Modifikationszeiten, Zugriffszeiten und Modi der Originaldatei bei.

Aktualisieren und beiseite stellen, um einen der (stark angehobenen) Kommentare anzusprechen

In Bezug auf Abdulls Kommentar zur scp Optionsreihenfolge schlägt er Folgendes vor:

scp -P80 -r some_directory -P 80 ...

..., verstreut Optionen und Parameter. getopt(1) definiert eindeutig, dass Parameter nach Optionen kommen müssen und nicht mit ihnen durchsetzt werden:

Die Parameter, die getopt aufgerufen wird, können in zwei Teile unterteilt werden: Optionen, die die Art und Weise ändern, in der getopt die Analyse durchführt (die Optionen und die Option in SYNOPSIS) und die Parameter, die analysiert werden sollen (Parameter in SYNOPSIS). Der zweite Teil beginnt um Der erste Nichtoptionsparameter, der kein Optionsargument ist, oder nach dem ersten Auftreten von '-'. Wenn im ersten Teil keine Option "-o" oder "--options" gefunden wird, wird der erste Parameter des zweiten Teils als kurze Optionszeichenfolge verwendet.

Da die Befehlszeilenoption -r keine weiteren Argumente erfordert, ist some_directory "der erste Nicht-Optionsparameter, der kein Optionsargument ist." Wie in der getopt(1)-Manpage klar dargelegt, werden alle nachfolgenden Befehlszeilenargumente (d. H. -P 80 ...) als Nicht-Optionen (und Nicht-Options-Argumente) angenommen.

In der Tat sieht getopt(1) so, dass das Beispiel mit dem Ende der Optionen und dem Beginn der Parameter dargestellt wird, die durch den nachfolgenden Text in grau dargestellt werden:

scp -P80 -r some_directory -P 80 ...

Dies hat nichts mit dem Verhalten von scp zu tun und alles damit, wie POSIX-Standardanwendungen Befehlszeilenoptionen mithilfe der getopt(3)-Gruppe von C-Funktionen analysieren.

Weitere Informationen zur Reihenfolge und Verarbeitung von Befehlszeilen finden Sie in der getopt(1)-Manpage:

man 1 getopt
1163

Ein zusätzlicher Hinweis. Setzen Sie nach dem Befehl scp die Option '-P', unabhängig davon, ob der Computer, auf dem Sie sich befinden, der zweite ist. Beispiel:

scp -P 2222 /absolute_path/source-folder/some-file [email protected]:/absolute_path/destination-folder
50
Gooshan

Sie wissen, was cooler ist als -P? nichts

Wenn Sie diesen Server mehr als ein paar Mal verwenden, müssen Sie eine ~/.ssh/config-Datei mit folgendem Eintrag erstellen/erstellen:

Host www.myserver.com
    Port 80

oder

Host myserver myserver80 short any.name.u.want yes_anything well-within-reason
    HostName www.myserver.com
    Port 80
    User username

Dann können Sie verwenden:

scp [email protected]:/root/file.txt .

oder

scp short:/root/file.txt .

Sie können alles in der "Host" -Zeile mit ssh, scp, rsync, git & more verwenden

Es gibt VIELE Konfigurationsoptionen, die Sie in Konfigurationsdateien verwenden können, siehe:

man ssh_config

40
Mike

Ich verwende verschiedene Ports als Standard und kopiere Dateien wie folgt zwischen Dateien:

scp -P 1234 [email protected][ip address or Host name]:/var/www/mywebsite/dumps/* /var/www/myNewPathOnCurrentLocalMachine

Dies ist nur für den gelegentlichen Gebrauch gedacht. Wenn es sich nach einem Zeitplan wiederholt, sollten Sie rsync und cron job verwenden.

25
Marian Zburlea

die scp-Hilfe sagt uns, dass der Port durch Großbuchstaben P angegeben wird. 

~$ scp
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[[email protected]]Host1:]file1 ... [[[email protected]]Host2:]file2

Hoffe das hilft.

4
D D

Datei auf den Host kopieren: scp SourceFile [email protected]:/directory/TargetFile

Datei vom Host kopieren: scp [email protected]:/directory/SourceFile TargetFile

Verzeichnis rekursiv vom Host kopieren: scp -r [email protected]:/directory/SourceFolder TargetFolder

NOTE: Wenn der Host einen anderen Port als Port 22 verwendet, können Sie ihn mit der Option -P angeben: scp -P 2222 [email protected]:/directory/SourceFile TargetFile

2
AJ.

um einen anderen Port für den Befehl scp zu verwenden, verwenden Sie das Großbuchstabe P wie folgt

scp -P port-number source-file/directory [email protected]:/destination

ya ALi

1
Hasan Barary

Dies kann durch Angabe des Ports über den -P-Schalter erreicht werden:

scp -i ~/keys/yourkey -P2222 file [email protected]:/directory/
1
Vaseem007

wenn Sie eine lokale Datei auf den Server kopieren möchten (geben Sie den Port an) 

scp -P 3838 /the/source/file [email protected]:/destination/file
0
Turan Zamanlı