Est-il possible d'exécuter ssh-copy-id sur un port autre que 22?


99

J'ai un serveur avec SSH s'exécutant sur un port non standard. Au lieu de 22, il fonctionne sous 8129. Pour me connecter, j'utilise:

ssh -p 8129 hostname

Maintenant, chaque fois que j'ai besoin de configurer une clé pour une connexion sans mot de passe, je dois copier la clé publique et l'ajouter manuellement à allowed_keys. J'ai découvert que la commande ssh-copy-idpourrait être utilisée pour simplifier ce processus, mais il semble ne pas avoir l'option de spécifier le port du serveur ssh.

Existe-t-il un moyen d' ssh-copy-idutiliser le port 8129 ou dois-je tout simplement oublier cette commande et copier / coller manuellement comme auparavant?

Réponses:


112
$ ssh-copy-id "-p 8129 user@host"

Source: http://it-ride.blogspot.com/2009/11/use-ssh-copy-id-on-different-port.html

REMARQUE: le port doit être en face de l'utilisateur @ hôte sinon il ne résoudra pas


11
Il est vraiment stupide, qui ssha la syntaxe ssh -p 1234 user@host, ssh-copy-id "-p 1234 user@host"et enfin scp -P 1234 user@host. Ce serait tellement bien d'avoir la même syntaxe.
Tombart

2
@Tombart puis rsync a rsync -e "ssh -p 1234" user@host. Je jure que c'est plus compliqué que d'utiliser un port personnalisé.
garetmckinley

1
La réponse de @Colt McCormack explique que cela a été amélioré dans les nouvelles versions et que cette syntaxe particulière n'est plus nécessaire.
meshy

1
FYI la commande complète nécessite l'IP tapé deux fois, et devrait ressembler à:ssh-copy-id "root@192.168.0.100 -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100
Dégénéré

1
Sur macOS (je suis sur High Sierra), les guillemets ne sont pas obligatoires. c'est à dire. ssh-copy-id -p 8129 user@hosttravaux.
Arjun Mehta

46

ssh-copy-idne prend aucun argument qu’il pourrait transmettre à la sshcommande sous-jacente , mais vous pouvez configurer un alias dans ~/.ssh/config.

Host myhost
HostName hostname
Port 8129

Alors courez ssh-copy-id myhost.


3
Cela a également l'avantage de supprimer la nécessité du -pdrapeau lors de sshtentatives régulières . Ce n’est donc pas seulement la bonne réponse à cette question, c’est The Right Thing, point final.
Warren Young

Merci pour cela. La deuxième ligne "Nom d'hôte" est inutile si vous êtes satisfait du nom d'hôte naturel de l'hôte.
Lonniebiz


11

Un rapide coup d'œil à la source indique qu'il ssh-copy-idsemble ne pas avoir de fonction permettant cela. Cependant, vous pourriez faire quelque chose comme ce qui suit:

ssh -p8129 user@host 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_*.pub

6

Cela fonctionne (à partir d' ici ):

ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 221 username@host'

5

J'ai toujours eu l'habitude scpde le copier:

scp -P 8129 ~/.ssh/id_*.pub user@host:
ssh -p 8129 user@host 'cat id_*.pub >> ~/.ssh/authorized_keys'

Bien que je dois dire, j'utiliserai probablement les autres méthodes (une ligne / connexion) si je m'en souviens à l'avenir. Mais ceci est une autre option pour vous.


2

Sur CentOS7, c'est juste:

 ssh-copy-id "-p 1234" user@host

Veillez à ne pas placer utilisateur @ hôte entre guillemets ou vous obtiendrez l'erreur suivante dans cette distribution:

/usr/bin/ssh-copy-id: ERROR: Bad port ' 1234 user@host'

0

Avec mon macOS, cela a fonctionné.

ssh-copy-id -i ~/.ssh/id_rsa.pub -p <port> user@host

0

J'utilise cette commande:

ssh-copy-id ssh://user@ip_addr:port

Exemple:

ssh-copy-id ssh://root@1.2.3.4:23

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.