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?

Milan Babuškov
la source

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

Jsan
la source
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 "[email protected] -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.

Gilles
la source
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
17

Depuis openssh-client_6.2, il existe désormais un indicateur de port dédié à la commande permettant cette syntaxe:

ssh-copy-id -p 8129 user@example

Il a également ajouté un support pour l'ajout d'autres options ssh avec l'indicateur -o.

Voici la page de manuel d'Ubuntu pour la version appropriée, introduite dans 13.04: http://manpages.ubuntu.com/manpages/saucy/man1/ssh-copy-id.1.html

Colt McCormack
la source
3
C’est la seule méthode qui a fonctionné pour le.
Luca Steeb
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
Chris Down
la source
6

Cela fonctionne (à partir d' ici ):

ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 221 username@host'
DJR
la source
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.

Kevin
la source
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'
Max Cuttins
la source
0

Avec mon macOS, cela a fonctionné.

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