web-dev-qa-db-fra.com

Comment configurez-vous SSH pour authentifier à l'aide des touches au lieu d'un nom d'utilisateur / mot de passe?

Comment configurez-vous SSH pour authentifier un utilisateur à l'aide des touches au lieu d'un nom d'utilisateur/mot de passe?

34
ScArcher2

Pour chaque utilisateur: ils devraient générer (sur leur machine locale) leur keypair à l'aide de ssh-keygen -t rsa (le rsa peut être remplacé par dsa ou rsa1 aussi, bien que ces options ne soient pas recommandées). Ensuite, ils doivent mettre le contenu de leur clé publique (id_rsa.pub) dans ~/.ssh/authorized_keys sur le serveur est connecté.

27

Je préfère en fait SSH-Copy-ID , un script trouvé sur * Nix par défaut (peut être mis sur Mac OS X assez facilement) qui le fait automatiquement pour vous . De la page man:

sSH-COPY-ID est un script qui utilise SSH pour vous connecter à une machine distante (à l'aide d'un mot de passe de connexion, l'authentification par mot de passe doit être activée, sauf si vous avez effectué une utilisation intelligente d'identités multiples)

Il modifie également les autorisations de la maison de l'utilisateur distant, ~/.sSH et ~/.SSH/Authorizesh/Authorize_Keys pour supprimer l'éditeur de groupe (qui vous empêcherait de vous connecter si la télécommande SSHD a des strictes définies dans sa configuration).

Si l'option -i est donnée, alors le fichier d'identité (par défaut à ~/.ssh/identity.pub) est utilisé, qu'il existe des clés dans votre agent SSH.

23
Chris Bunch

Fredonner, ne l'obtenez pas. Créez simplement une clé et commencez. :) [~ # ~] HOWTO [~ # ~ ~] Additionnellement, vous pouvez interdire la connexion par mot de passe. Par ex./etc/ssh/sshd_config:

PasswordAuthentication no
6
Node

Pour les utilisateurs de Windows à configurer le putté

2
Gareth

Pour résumer ce que les autres ont dit, la mise en place de clés SSH est facile et inestimable.

Sur la machine que vous serez Sshing à partir de Vous devez générer votre paire de clés:

claudius:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dinomite/.ssh/id_rsa): <ENTER>
Enter passphrase (empty for no passphrase): <PASSPHRASE>
Enter same passphrase again: <PASSPHRASE>
Your identification has been saved in /home/dinomite/.ssh/id_rsa.
Your public key has been saved in /home/dinomite/.ssh/id_rsa.pub.
The key fingerprint is:
a3:93:8c:27:15:67:fa:9f:5d:42:3a:bb:9d:db:93:db dinomite@claudius

Il suffit d'appuyer sur Entrée où a noté et entrez une phrase secrète lorsque vous y êtes invité - idéalement différent de votre mot de passe de connexion régulier sur l'hôte actuel et ceux que vous allez assurer.

Ensuite, vous devez copier la clé que vous venez de générer à l'hôte que vous souhaitez SSH to. La plupart des distributions Linux ont un outil ssh-copy-id Pour ce faire:

claudius:~$ ssh-copy-id caligula.dinomite.net
Now try logging into the machine, with "ssh 'caligula.dinomite.net'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Si votre distribution ne l'a pas, vous devez alors copier la clé de l'hôte de destination et l'ajouter à la (éventuellement existante) .ssh/authorized_keys déposer:

claudius:~$ scp .ssh/id_dsa.pub caligula.dinomite.net:
id_dsa.pub                                    100% 1119     1.1KB/s   00:00
claudius:~$ ssh caligula.dinomite.net
Last login: Sat May  9 10:32:30 2009 from claudius.csh.rit.edu
Caligula:~$ cat id_dsa.pub >> .ssh/authorized_keys

Enfin, pour obtenir le maximum de bénéfices des clés SSH, vous voudrez exécuter un agent SSH. Si vous utilisez un environnement de bureau (Gnome, KDE, etc.), alors vous déconnectez-vous et revenez un agent SSH pour vous. Sinon, vous pouvez ajouter ce qui suit à votre fichier RC Shell RC (.bashrc, .profile, etc.):

SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
    eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
1
Drew Stephens

Ceci est conçu comme une liste de contrôle. Si on suit le point de point, les gothas les plus courants aux connexions sans passe-passe doivent être couverts. La plupart de ces points sont mentionnés ailleurs; C'est une agrégation.

Il doit y avoir un ~/.ssh répertoire chmod 700 sur chaque machine sous le compte qui provoquera ou reçoive les connexions.

La clé (privée) doit être générée sans phrase secrète ou un agent peut être démarré qui détiendra une version déchiffrée d'une clé de port de phrase secrète pour les clients à utiliser. Démarrez l'agent avec ssh-agent $Shell. C'est le $Shell une partie qui m'a pris un certain temps pour trouver. Consultez la page Homme car il existe des détails multiformes si vous souhaitez utiliser un agent.

N'oubliez pas que par défaut les touches faibles (<2048 bits DSA) ne sont pas acceptées par des versions récentes de SSHD.

Les éléments suivants doivent être effectués sur la machine côté client à originaire une connexion.

  1. Votre clé privée doit être placée dans ~/.ssh/id_rsa ou ~/.ssh/id_dsa selon le cas. Vous pouvez utiliser un autre nom, mais il doit ensuite être inclus sur une option -I sur la commande SSH sur la machine d'origine pour indiquer explicitement la clé privée.

  2. Votre clé privée doit être chmod 600.

  3. Vérifiez que votre dossier à domicile est chmod 700.

Maintenant, pour permettre à une machine de recevoir une demande. Un modèle commun est l'endroit où un administrateur vous donne accès à une machine que vous ne possédez pas (comme l'hébergement Web partagé). Par conséquent, l'idée de SSH est que vous proposez une clé publique à qui vous donne le compte. C'est pourquoi vous ne mettez généralement pas de clés privées sur la machine recevant des demandes. Mais, si vous voulez aussi que cette machine fasse également SSH sortant, vous devez traiter, c'est une machine d'origine avec les étapes ci-dessus.

  1. Votre clé publique doit être placée dans un fichier appelé ~/.ssh/authorized_keys sous le compte qui sera recevoir les connexions. Vous pouvez également placer d'autres clés autorisées à se connecter via ce compte ici également. Une chose particulièrement délicate si vous êtes dans VI et coller la clé dans le fichier à partir du tampon de pâte au mastic, c'est ceci: la clé commence par un "ssh-". Si vous n'êtes pas en mode insertion, le premier "s" mettra VI en mode insertion et le reste de la clé ressemblera à bien. Mais vous manquerez un "s" au début de la clé. Il m'a fallu des jours pour que je trouve cela.
  2. J'aime chmod 600 ~/.ssh/authorized_keys. Il doit être au moins G-w.
  3. Maintenant, vous devez avoir l'empreinte digitale de l'hôte ajoutée au cache. Allez à la machine A, et ssh à la machine B manuellement. La première fois, vous obtiendrez une requête comme "Voulez-vous ajouter... Au cache de la clé hôte?". Si vous essayez d'obtenir une automatisation (telle qu'un script) d'utiliser ce login, vous devez vous assurer que le client SSH utilisé par l'automatisation n'obtiendra pas cette invite.
1
Vic K

Il y a de bons conseils ici, donc je ne le répète pas. Une fois que vous avez obtenu un serveur configuré pour vous permettre de vous connecter avec les touches, vous pouvez configurer les autres pour faire la même chose avec celui-ci:

remote=server1 server2 server3 server4
for r in $remote; do echo connecting to $r; tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh $r "tar zxf -; chmod 700 .ssh" ; done

Il suffit de CD dans votre répertoire à domicile, définissez la variable distante comme un ou plusieurs noms de serveurs et faire un tas à la fois. Le mot de passe qu'il demande sera votre mot de passe SSH pour le serveur distant. Vous pouvez bien sûr utiliser une version simplifiée sans la boucle:

tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh YOUR_SERVER_NAME_HERE "tar ztvf -; chmod 700 .ssh"

N'oubliez pas: Copiez uniquement vos clés publiques. Vous ne voulez pas que vos clés privées soient assis sur un serveur où toute personne avec sudo peut les copier et la force brute de votre phrase secrète.

0
Bruno Bronosky

Comme d'autres l'ont dit, vos utilisateurs devraient faire des claviers pour eux-mêmes sur leurs ordinateurs clients avec SSH-Keygen et ajouter leur clé publique à ~/.SSH/Autocorisé sur la machine qu'ils souhaitent se connecter.

Pour des informations plus détaillées cependant, je recommande vivement SSH, la coquille sécurisée .

0
Neall