Dans mon cas, je veux faire un paiement SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Cependant, je veux avoir le mot de passe sur cette seule ligne, afin qu'il ne s'affiche pas.
Dans mon cas, je veux faire un paiement SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Cependant, je veux avoir le mot de passe sur cette seule ligne, afin qu'il ne s'affiche pas.
Réponses:
svn co svn + ssh: // nom d'utilisateur: password@10.106.191.164/home/svn/shproject
Étant donné que vous utilisez SSH, la méthode préférée consiste à utiliser une clé publique pour l'autorisation, ce qui évite complètement la nécessité d'un mot de passe.
Un guide pour créer et installer les clés peut être trouvé ici .
Il est infiniment préférable de générer une paire de clés. En tant qu'utilisateur local:
$ ssh-keygen -t rsa
(accepter toutes les valeurs par défaut)
Prenez ensuite le contenu de .ssh / id_rsa.pub et ajoutez-le sur le serveur distant à .ssh / authorized_keys Assurez-vous qu'il est tout collé sur la même ligne. Assurez-vous également que les autorisations du répertoire .ssh sont 600.
Ensuite, vous devriez pouvoir ssh sans être invité à entrer un mot de passe.
Au lieu d'utiliser un mot de passe, vous voudrez peut-être jeter un œil à une paire de clés privée / publique et demander à ssh de l'utiliser. la plupart des distributions linux sont livrées avec des commandes faciles à utiliser pour créer une telle paire. cela nécessiterait cependant un accès côté serveur (une fois) pour déposer le fichier de clé publique dans le fichier ~ / .ssh / authorized_keys de votre utilisateur.
Eh bien, je ne veux entrer un mot de passe - Je ne aime pas compter sur mon mot de passe d' être sauvé quelque part; cependant, je veux l'entrer une fois par ensemble de commandes svn + ssh; et souvent, vous voulez juste en faire un svn checkout
- et vous devez quand même entrer des tonnes de mots de passe. C'est dans un tel cas que je voudrais taper un mot de passe une seule fois.
Ainsi, seules les réponses de @Boinst et @Marius étaient pertinentes pour mon cas d'utilisation; malheureusement, ils n'ont pas aidé, car je n'ai pas pu les faire travailler. Je me demande si les auteurs des articles eux-mêmes ont essayé les commandes avant de les publier, car maintenant je ne peux pas imaginer comment ils pourraient fonctionner - voici un test que j'ai fait localement sur mon PC Ubuntu 10.04 (et je romps avec Ctrl-C, chaque fois que je vois le mot de passe apparaît):
$ svn --version | head -1
svn, version 1.6.6 (r40053)
$ cd /tmp
$ svnadmin create myrepo
$ read -p 'ssh myself@127.0.0.1? ' PASS
ssh myself@127.0.0.1? [type _PASSWORD_, press ENTER]
## trying first with https://superuser.com/a/71479/39752
# (specify in URL user:pass separated by colon)
## plain ssh - asks for password anyway:
$ ssh myself:$PASS@127.0.0.1
myself:_PASSWORD_@127.0.0.1's password: ^C
# svn - with just username, as expected:
$ svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
myself@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly
# svn - with password added to URL, asks for password anyway:
$ svn co svn+ssh://myself:$PASS@127.0.0.1/tmp/myrepo myrepo-wc
myself:_PASSWORD_@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly
# trying then with https://superuser.com/a/380426/39752, https://superuser.com/a/327822/39752
# (--non-interactive and --username/--password on command line)
# svn - asks for password anyway:
$ svn co svn+ssh://myself@127.0.0.1/tmp/myrepo --non-interactive --trust-server-cert --username myself --password $PASS --no-auth-cache
myself@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly
En ce qui concerne --username/--password
le svn
ligne de commande est concernée - qui n'a pas d' importance avec svn+ssh
, parce qu'il est de ssh
demander, non svn
:
svn - Subversion ignorant les options "--password" et "--username" - Stack Overflow
L'invite que vous obtenez ne ressemble pas à Subversion vous demandant un mot de passe, elle ressemble à ssh demandant un mot de passe.
De plus, comme le journal le montre, ssh
lui-même n'accepte pas " username:password@...
" dans l'URL - et donc non plus svn
. Pourquoi il est acceptable d'utiliser uniquement le nom d'utilisateur dans l'URL dans svn
, est probablement expliqué dans ~/.subversion/config
:
### (Si l'URL comprend un nom d'utilisateur, le nom d'hôte sera
### transmis à l'agent de tunnel en tant que @.)
Remarquez que rien n'est dit <user>:<pass>@<hostname>
.
Maintenant, grâce à la page Subversion sur SVN + SSH sur Debian , j'ai finalement réalisé qu'il y avait une SVN_SSH
variable d'environnement utilisée ~/.subversion/config
pour (je suppose) le tunnel ssh; et cela ouvre enfin la possibilité d'utiliser le programme sshpass
pour gérer le mot de passe d'une manière à sens unique:
$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
Checked out revision 0.
Eh bien, au moins je suis content d'avoir enfin trouvé une solution qui fonctionne pour moi - j'espère que cela aide quelqu'un d'autre aussi,
Cheers!
Vous pouvez également utiliser le nom d'utilisateur et le mot de passe des commutateurs indiqués .
Je pense que l'utilisation de sshpass (sous Linux) est le meilleur moyen d'y parvenir.
Installer sshpass
$ sudo apt-get install sshpass
Définissez la variable d'environnement temporaire
$ export SSHPASS=*yourpass*
Modifier le fichier de configuration svn
$ nano ~/.subversion/config
Enfin commentez ajouter sshpass -e
à la ligne ssh, avant la ssh
commande
ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no