web-dev-qa-db-fra.com

scp avec le numéro de port spécifié

J'essaie de scp un fichier d'un serveur distant à ma machine locale. Seul le port 80 est accessible.

J'ai essayé:

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

mais j'ai eu cette erreur: cp: 80: No such file or directory

Comment spécifier le numéro de port dans une commande scp?

636
One Two Three

Contrairement à ssh, scp utilise le commutateur P majuscule pour définir le port à la place du p minuscule:

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

Le commutateur p minuscule est utilisé avec scp pour la conservation des temps et des modes.

Voici un extrait de la page de manuel de scp contenant tous les détails concernant les deux commutateurs, ainsi qu'une explication de la raison pour laquelle la majuscule P a été choisie pour scp:

-P port Spécifie le port auquel se connecter sur l'hôte distant. Notez que cette option est écrite avec un 'P' majuscule, car -p est déjà réservé à la préservation des temps et des modes du fichier dans rcp (1). 

-p Conserve les heures de modification, les temps d'accès et les modes du fichier d'origine.

Mise à jour et mise à part pour répondre à l'un des commentaires (très votés)

En ce qui concerne le commentaire d'Abdull à propos de l'ordre scp, il suggère ce qui suit:

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

..., sépare les options et les paramètres. getopt(1) définit clairement que les paramètres doivent figurer après les options et ne pas en être entremêlés:

Les paramètres de getopt sont appelés avec peuvent être divisés en deux parties: les options qui modifient la façon dont getopt effectuera l'analyse (les options et l'optstring dans SYNOPSIS) et les paramètres à analyser (paramètres dans SYNOPSIS). La deuxième partie commencera à le premier paramètre de non-option qui n'est pas un argument d'option ou après la première occurrence de '-'. Si aucune option '-o' ou '--options' n'est trouvée dans la première partie, le premier paramètre de la deuxième partie est utilisé comme chaîne d'options courte.

Puisque l'option de ligne de commande -r ne prend aucun autre argument, some_directory est "le premier paramètre non-option qui n'est pas un argument d'option". Par conséquent, comme indiqué clairement dans la page de manuel getopt(1), tous les arguments de ligne de commande qui le suivent (c.-à-d. -P 80 ...) sont considérés comme des options sans option (et des arguments sans option).

Donc, en pratique, voici comment getopt(1) voit l'exemple présenté avec la fin des options et le début des paramètres délimités par le remplacement du texte en gris:

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

Cela n'a rien à voir avec le comportement scp et avec la manière dont les applications standard POSIX analysent les options de ligne de commande à l'aide de l'ensemble getopt(3) de fonctions C.

Pour plus de détails sur la commande et le traitement en ligne de commande, veuillez lire la page de manuel getopt(1) en utilisant:

man 1 getopt
1163
Michael Goldshteyn

Un indice supplémentaire. Placez l'option '-P' après la commande scp, que la machine sur laquelle vous êtes ssh-ing ou non soit la seconde (ou destination). Exemple:

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

Vous savez ce qui est plus cool que -P? rien

Si vous utilisez ce serveur plus de quelques fois, configurez/créez un fichier ~/.ssh/config avec une entrée telle que:

Host www.myserver.com
    Port 80

ou

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

Ensuite, vous pouvez utiliser:

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

ou

scp short:/root/file.txt .

Vous pouvez utiliser n'importe quoi sur la ligne "Host" avec ssh, scp, rsync, git & more

Il existe de nombreuses options de configuration que vous pouvez utiliser dans les fichiers de configuration, voir:

man ssh_config

40
Mike

J'utilise différents ports, puis standard et copie les fichiers entre eux, comme ceci:

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

Ceci est seulement pour une utilisation occasionnelle, s'il se répète selon un calendrier, vous devez utiliser rsync et cron job pour le faire.

25
Marian Zburlea

l’aide de scp nous indique que le port est spécifié par P. majuscule. 

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

J'espère que cela t'aides.

4
D D

Copie du fichier sur l'hôte: scp SourceFile remoteuser@remotehost:/directory/TargetFile

Copie du fichier à partir de l'hôte: scp user@Host:/directory/SourceFile TargetFile

Copier le répertoire récursivement à partir de l'hôte: scp -r user@Host:/directory/SourceFolder TargetFolder

NOTE: Si l'hôte utilise un port autre que le port 22, vous pouvez le spécifier avec l'option -P: scp -P 2222 user@Host:/directory/SourceFile TargetFile

2
AJ.

pour utiliser un autre port sur la commande scp utiliser le capital P comme celui-ci

scp -P port-number source-file/directory user@domain:/destination

toi ALi

1
Hasan Barary

Ceci peut être réalisé en spécifiant le port via le commutateur -P:

scp -i ~/keys/yourkey -P2222 file ubuntu@Host:/directory/
1
Vaseem007

si vous avez besoin de copier le fichier local sur le serveur (spécifiez le port) 

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