Im Gegensatz zu ssh wird bei scp der Port mit dem Großbuchstaben P statt mit dem Kleinbuchstaben p angegeben:
scp -P 80 ... # Use port 80 to bypass the firewall, instead of the scp default
Der Kleinbuchstaben-Schalter p wird bei scp für die Speicherung von Zeiten und Modi verwendet.
Hier ist ein Auszug aus der Manpage von scp mit allen Details zu den beiden Schaltern sowie eine Erklärung, warum für scp der Großbuchstabe P gewählt wurde:
-P port Gibt den Port an, mit dem eine Verbindung auf dem entfernten Host hergestellt werden soll. Beachten Sie, dass diese Option mit einem großen 'P' geschrieben wird, da -p bereits reserviert ist, um die Zeiten und Modi der Datei in rcp(1) zu erhalten.
-p Behält Änderungszeiten, Zugriffszeiten und Modi der Originaldatei bei.
Bonus-Tipp : Wie kann ich den Port ermitteln, der von dem/einem SSH-Daemon verwendet wird, um SSH-Verbindungen zu akzeptieren?
Diese Frage lässt sich mit Hilfe der netstat
Nutzen wie folgt:
sudo netstat -tnlp | grep sshd
Oder Sie verwenden die weitaus besser lesbaren wortbasierten netstat-Optionsnamen:
sudo netstat --tcp --numeric-ports --listening --program | grep sshd
Wenn Ihr ssh-Daemon mit den Standardwerten für die zu überwachenden Ports konfiguriert ist, erhalten Sie die folgende Ausgabe (wobei die Leerzeichen zwischen den Spalten ein wenig gekürzt wurden, damit die gesamte Tabelle ohne Scrollen sichtbar ist):
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State ID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 888/sshd: /usr/sbin
tcp6 0 0 :::22 :::* LISTEN 888/sshd: /usr/sbin
Wichtiger Hinweis
Für die oben genannten Beispiele, sudo
wurde verwendet, um netstat mit Administratorrechten auszuführen, um zu sehen alle der Programm-Namen . Wenn Sie netstat als normaler Benutzer ausführen (d.h. ohne sudo und unter der Annahme, dass Ihnen keine Admin-Rechte gewährt wurden), werden nur die Programmnamen für Sockets angezeigt, die Ihre UID als Eigentümer haben. Die Programm-Namen für Sockets, die anderen Benutzern gehören, werden nicht angezeigt (d. h., sie werden ausgeblendet und stattdessen wird ein Platzhalter-Bindestrich angezeigt):
Proto Recv-Q Send-Q Local Address Foreign Address State ID/Program name
tcp 0 0 127.0.0.1:46371 0.0.0.0:* LISTEN 4489/code
...
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
...
Aktualisierung und Ergänzung, um auf einen der (stark hochgestimmten) Kommentare einzugehen :
In Bezug auf Abdulls Bemerkung über scp
Option bestellen, was er vorschlägt:
scp -r some_directory -P 80 ...
..., streut Optionen und Parameter ein, da die -r
benötigt keine zusätzlichen Argumente und some_directory
wird als erster Parameter des Befehls behandelt, so dass -P
und alle nachfolgenden Befehlszeilenargumente sehen wie zusätzliche Parameter für den Befehl aus (d.h. Argumente mit vorangestelltem Bindestrich werden nicht mehr als Schalter betrachtet).
getopt(1)
eindeutig festgelegt, dass die Parameter nach Optionen (d. h. Schalter) und nicht wahllos mit ihnen durchsetzt sein:
Die Parameter, mit denen getopt aufgerufen wird, können in zwei Teile unterteilt werden: Optionen, die die Art und Weise ändern, wie getopt das Parsing durchführt (die Optionen und der optstring in der SYNOPSIS), und die Parameter, die geparst werden sollen (Parameter in der SYNOPSIS). Der zweite Teil beginnt bei dem ersten Nicht-Optionsparameter, der kein Optionsargument ist, oder nach dem ersten Vorkommen von '--'. Wird im ersten Teil keine Option '-o' oder '--options' gefunden, wird der erste Parameter des zweiten Teils als kurze Optionszeichenfolge verwendet.
Da die -r
Befehlszeilenoption keine weiteren Argumente, some_directory
ist "der erste Nicht-Optionsparameter, der kein Optionsargument ist". Daher, wie eindeutig in der getopt(1)
man-Seite, alle darauf folgenden Befehlszeilenargumente (d.h., -P 80 ...
) werden als Nicht-Optionen (und Nicht-Options-Argumente) betrachtet.
Das heißt also, dass man auf diese Weise getopt(1)
sehen Sie das Beispiel, bei dem das Ende der Optionen und der Anfang der Parameter durch grauen Text abgegrenzt sind:
scp -r some_directory -P 80 ...
Dies hat nichts zu tun mit scp
Verhalten und alles, was damit zu tun hat, wie POSIX-Standardanwendungen Befehlszeilenoptionen unter Verwendung der getopt(3)
Menge von C-Funktionen.
Weitere Einzelheiten zur Befehlszeilenbestellung und -verarbeitung finden Sie in der getopt(1)
Manpage verwenden:
man 1 getopt
75 Stimmen
Port sollte in Großbuchstaben sein -P 80