Je suis assez nouveau dans le monde Linux et je suis en train de configurer un serveur Ubuntu 16.04.
J'ai été capable de générer des clés avec ssh-keygen
et de l'enregistrer dans /home/ther4nd0moo/.ssh/id_rsa
J'ai ensuite utilisé ssh-copy-id ther4nd0moo@my_ip
et je me suis assuré que le fichier allowed_keys est au bon endroit.
Lorsque j'utilise ssh -v ther4nd0moo@my_ip
sur un autre ordinateur, des choses étranges apparaissent (du moins pour moi)
OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g 1 Mar 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 10.0.0.189 [10.0.0.189] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/edgar/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.1 pat OpenSSH* compat 0x04000000
debug1: Authenticating to 10.0.0.189:22 as 'need206'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: [email protected]
debug1: kex: Host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server Host key: ecdsa-sha2-nistp256 SHA256:YzQwUoOherHwxOOhzEhue7ecx+OMi0FpmIcSONi8X1o
debug1: Host '10.0.0.189' is known and matches the ECDSA Host key.
debug1: Found key in /home/edgar/.ssh/known_hosts:3
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/edgar/.ssh/id_rsa
debug1: Trying private key: /home/edgar/.ssh/id_dsa
debug1: Trying private key: /home/edgar/.ssh/id_ecdsa
debug1: Trying private key: /home/edgar/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).
Ce qui me dérange, c’est la façon dont le fichier d’identité et la clé privée sont recherchés sur /home/edgar/
(Edgar étant mon nom que j’ai mis lors de l’installation du serveur). Pour tenter de résoudre ce problème, copié le contenu de la clé à partir de /home/ther4nd0mmoo/.ssh
et créé le dossier /home/edgar/.ssh
, ce qui explique probablement le message Found key in /home/edgar/.ssh/known_hosts:3
, mais je ne peux toujours pas accéder au serveur.
J'ai essayé ssh -i /home/ther4nd0moo/.ssh/id_rsa ther4nd0moo@my_ip
et mon terminal dit que c'est not accessible: No such file or directory
Est-ce que je fais quelque chose de mal?
Les clés SSH fonctionnent en ayant une clé privée sur votre machine locale et une clé publique correspondante sur la machine distante.
Ainsi, lorsque vous avez exécuté ssh-keygen, vous avez créé 2 clés: la clé privée (~/.ssh/id_rsa
) et la clé publique (~/.ssh/id_rsa.pub
).
Vous devez copier le contenu du fichier de clé publique (~/.ssh/id_rsa.pub
) de votre ordinateur local dans le fichier ~/.ssh/authorizedkeys
de l'ordinateur distant. Ajoutez-le simplement à une nouvelle ligne.
Si vous vous connectez à votre ordinateur distant à partir d'un ordinateur local DIFFERENT, vous devez copier le fichier id_rsa de l'ordinateur d'origine sur le deuxième ordinateur local ou (mieux) créer une autre paire de clés privée/publique pour le deuxième. Ordinateur local, puis copiez la clé publique du deuxième ordinateur sur votre serveur distant.
Le serveur distant peut avoir un nombre quelconque de clés publiques dans ~/.ssh/authorizedkeys
, et il est judicieux (je crois) d’avoir une paire de clés différente pour chacune de vos machines locales.
Si vous avez besoin de ssh de la machine REMOTE vers une autre machine (par exemple, si vous devez ssh de la machine distante vers votre ordinateur portable), vous devez configurer la machine REMOTE avec sa propre paire de clés privée/publique et copier le clé publique de la machine au fichier ~/.ssh/authorizedkeys
de l'ordinateur portable.
Pensez-y comme ceci: chaque machine peut avoir une clé de travail (la clé privée), et chaque autre machine a un trou de clé (le fichierkekeKeykeys) - si une autre machine a un paramètre de serrure dans lequel votre clé convient, vous pouvez y accéder. Pour travailler en sens inverse, vous devez configurer une autre clé et des paramètres de trou de serrure. (probablement pas très bien expliqué - mais j'espère que cela aide!).
La commande ssh-copy-id
est fondamentalement juste une commande de raccourci pour enregistrer le faire manuellement.
Personnellement, je préfère copier la clé publique manuellement, simplement parce que j'aime faire les choses à la dure. ;)