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.