ssh sans mot de passe pour un autre nom d'utilisateur?


14

Je veux faire une connexion ssh sans mot de passe pour un projet subversion. En ce moment, j'utilise ssh + svn, et c'est un peu ennuyeux, car je dois taper le mot de passe chaque fois que je veux effectuer une transaction avec le serveur.

J'ai trouvé plusieurs tutoriels sur le Web sur la façon de générer une clé pour ssh sans mot de passe, mais ils semblent tous supposer que j'utilise le même nom d'utilisateur sur le système distant que pour mon système domestique. Cependant, le nom d'utilisateur que j'utilise pour ssh + svn est différent du nom du compte d'utilisateur sur le système que j'exécute. Comment puis-je configurer cela correctement? Je n'ai pas eu la chance de simplement changer le nom dans le fichier clé.

Réponses:


15

Il vous suffit de fournir le nom d'utilisateur de l'autre système dans la svncommande:

$ svn co svn+ssh://otheruser@othersystem/path/to/repo

Pour répondre également au titre de votre question:

$ ssh otheruser@othersystem

Cela provoque sshdsur la machine distante la recherche ~otheruser/.ssh/authorized_keysde la clé publique correspondant à la clé privée sur la machine sur laquelle vous tapez la commande.


1
Une partie des instructions consistait donc à créer un fichier .ssh/id_rsa.pubet à le télécharger sur le serveur distant. Quand je l'ai fait, cela s'est terminé par localusername @ localsystem. Cela devrait être changé pour remoteusername @ remotesystem, non? À la fois localement et à distance?
user394

5
Non. Ajoutez simplement le contenu de votre section locale id_rsa.pubà authorized_keyssur le système distant. Ça va marcher.
Warren Young

1
alternativement, de nombreux systèmes ont ssh-copy-id pour résoudre ce problème: "ssh-copy-id -i ~ / .ssh / id_rsa.pub username @ remote-machine"
Matt Simmons

Malheureusement, beaucoup ne le font pas, et il semble que ce ne soit pas une partie standard d'OpenSSH, il existe donc au moins quelques implémentations différentes de ce script.
Warren Young

Si vous utilisez gnome, l'hippocampe a un déploiement automatisé des clés.
Maciej Piechotka

9

Il y a deux façons de faire ça:

1) mettez user @ dans l'url svn; ceci indique à svn + ssh de se connecter en tant qu'utilisateur. Je pense que c'est une mauvaise idée du point de vue de la maintenance, car des éléments comme des éléments externes qui pointent vers d'autres parties du référentiel ne fonctionneront pas correctement.

2) créez un ~ / .ssh / config (documenté comme ssh_config ) qui dit quelque chose comme:

Host othersystem
  User otheruser

De cette façon, toute tentative de ssh vers un autre système sera utilisée par défaut avec un autre utilisateur. Ce qui est pratique pour vous lorsque vous faites ssh manuellement ainsi que lorsque vous utilisez svn.


5

Vous n'avez pas besoin d'avoir le même nom d'utilisateur sur les deux machines. Tant que vous générez la clé ( ssh-keygen), vous devez copier la ligne depuis ~/.ssh/id_rsa.pubou ~/.ssh/id_dsa.pub(selon le type de clé) depuis le serveur local et l'ajouter à ~/.ssh/authorized_keysà distance.

% ssh-keygen
% cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

Si vous ne voulez pas taper à remoteuserchaque fois, ajoutez ~/.ssh/config:

Host remoteserver
    User remoteuser

PS. Le nom de la clé peut prendre la forme de localuser@localhostmais ce n'est qu'un nom . Cela peut être aussi bien myfavouritekey@myfavouritecomputeret personne ne s'en soucierait.


La commande "cat" ci-dessus est le cœur du ssh-copy-idscript commun mais non standard mentionné ci-dessus. Je le reconnais car tous les systèmes que j'utilise ne sont pas fournis ssh-copy-id, j'ai donc tapé quelque chose comme ça plusieurs fois. :)
Warren Young

Je n'en ai jamais entendu parler ssh-copy-id. J'utilise habituellement vimou seahorse;)
Maciej Piechotka

0

Après avoir créé .ssh / config et exécuté:

cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

Je reçois une erreur:

Bad owner or permissions on /usr/share/eprints3/.ssh/config

puis j'ajoute chmod 600 .ssh/config, et après ça, ça marche bien.

enter code here

1
C'est mieux si vous l'ajoutez dans le fichier authorized_keys, sinon il supprimera également les clés de publication des autres. Donc mieux si vous modifiez votre réponse avec 'cat >> .ssh / authorized_keys'
Nitin Mahesh
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.