Voici ce que j'ai essayé et j'ai eu une erreur:
$ cat /home/tim/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Password:
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory
Voici ce que j'ai essayé et j'ai eu une erreur:
$ cat /home/tim/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Password:
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory
Réponses:
OpenSSH est livré avec une commande pour ce faire,
ssh-copy-id
. Vous lui donnez simplement l'adresse distante et il ajoute votre clé publique auauthorized_keys
fichier sur la machine distante:Vous devrez peut-être utiliser l'
-i
indicateur pour localiser votre clé publique sur votre ordinateur local:la source
>>
est géré par votre shell, et vous exécutez la commande via SSH au lieu de passer par un shell. Son correctif d'avoir SSH exécutant un shell, qui exécute ensuite votre commande, devrait fonctionnerssh-copy-id
ne fonctionnera pas, non?Vous pouvez toujours faire quelque chose comme ça:
Je ne sais pas si vous pouvez
cat
partir d'une machine locale dans une session ssh. Déplacez-le simplement dans / tmp comme suggéré.Edit: c'est exactement ce qui
ssh-copy-id
fait. Comme Michael l'a dit.la source
cat
ou autrement). Ce que vous décrivez est à l'ancienne;ssh-copy-id
est recommandé car il y a moins de risques de fautes de frappe ou de donner aux fichiers de mauvaises autorisations.cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
.Cette réponse décrit comment faire fonctionner la manière voulue indiquée dans la question.
Vous pouvez exécuter un shell sur l'ordinateur distant pour interpréter la signification particulière de l'
>>
opérateur de redirection:L'opérateur de redirection
>>
est normalement interprété par un shell.Lorsque vous exécutez,
ssh host 'command >> file'
il n'est pas garanti que cecommand >> file
sera interprété par un shell. Dans votre cas, ilcommand >> file
est exécuté à la place du shell sans interprétation spéciale et a>>
été donné à la commande comme argument - de la même manière que l'exécutioncommand '>>' file
dans un shell.Certaines versions de SSH (OpenSSH_5.9) invoqueront automatiquement le shell sur le serveur distant et lui passeront la ou les commandes lorsqu'ils détecteront des jetons à interpréter par un shell comme
;
>
>>
etc.la source
openssh
ne fournitssh-copy-id
. La séquence serait:Générez une clé 4k décente
Démarrez votre agent ssh et aspirez des informations comme
SSH_AGENT_PID
, etc.Maintenant, commencez à charger des clés dans votre agent SSH
Vérifiez qu'il est chargé
Cela vous montrera ce que vous avez dans l'agent ssh
Désormais SSH vers un système distant
Vous pouvez maintenant exécuter ssh-copy-id sans arguments:
Cela crée
~/.ssh/authorized_keys
et remplit les informations de base requises de ssh-agent.la source
J'ai eu des problèmes avec ssh-copy-id lors du choix d'un autre port que 22 ... alors voici mon oneliner avec un port ssh différent (par exemple 7572):
la source
En effet, la
the ssh-copy-id
commande fait exactement cela (à partir duopenssh-client
package):Remarque:
host
signifie adresse IP ou domaine .Je voudrais également ajouter quelques informations supplémentaires à ce
1) Nous pouvons spécifier un port différent pour SSH sur le serveur de destination:
Remarque:
le port doit être en face du
user@host
ou il ne se résoudra pas.La source
2) On peut spécifier un fichier avec une clé publique :
Remarque:
L'
-i
option nous permet d'indiquer l'emplacement approprié du nom avec le fichier qui contient la clé publique.Parfois, cela peut être utile, surtout si nous le stockons dans un emplacement non standard ou si nous avons plusieurs clés publiques sur notre ordinateur et que nous voulons en indiquer une spécifique.
la source