In meinem Fall möchte ich eine SVN-Prüfung durchführen:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Ich möchte jedoch das Passwort in dieser einen Zeile haben, damit es nicht erscheint.
In meinem Fall möchte ich eine SVN-Prüfung durchführen:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Ich möchte jedoch das Passwort in dieser einen Zeile haben, damit es nicht erscheint.
Antworten:
svn co svn + ssh: // Benutzername: password@10.106.191.164/home/svn/shproject
sshpass
(was für mich funktioniert).
Da Sie SSH verwenden, ist die bevorzugte Methode die Verwendung eines öffentlichen Schlüssels für die Autorisierung, wodurch die Notwendigkeit eines Kennworts vollständig erspart wird.
Eine Anleitung zum Erstellen und Installieren der Schlüssel finden Sie hier .
Unendlich besser ist es, ein Schlüsselpaar zu generieren. Als Ihr lokaler Benutzer:
$ ssh-keygen -t rsa
(Akzeptiere alle Standardeinstellungen)
Nehmen Sie dann den Inhalt von .ssh / id_rsa.pub und fügen Sie ihn auf dem Remote-Server zu .ssh / authorized_keys hinzu. Stellen Sie sicher, dass alles in dieselbe Zeile eingefügt ist. Stellen Sie außerdem sicher, dass die Berechtigungen des .ssh-Verzeichnisses 600 sind.
Dann sollten Sie in der Lage sein, ssh ohne Aufforderung zur Eingabe eines Passworts.
Anstatt ein Passwort zu verwenden, sollten Sie sich ein privates / öffentliches Schlüsselpaar ansehen und dieses von ssh verwenden lassen. Die meisten Linux-Distributionen enthalten einfach zu verwendende Befehle, um ein solches Paar zu erstellen. Dies würde jedoch (einmal) Zugriff auf die Serverseite erfordern, um die Datei mit dem öffentlichen Schlüssel in der Datei ~ / .ssh / authorized_keys Ihres Benutzers abzulegen.
Nun, ich tun will , ein Passwort einzugeben - ich mag sie nicht auf meinem Passwort verläßt irgendwo gespeichert worden ; Ich möchte es jedoch einmal pro Satz von svn + ssh-Befehlen eingeben. und oft möchten Sie nur eines tun svn checkout
- und müssen trotzdem Tonnen von Passwörtern eingeben. In einem solchen Fall möchte ich ein Passwort nur einmal eingeben.
Daher waren nur die Antworten von @Boinst und @Marius für meinen Anwendungsfall relevant. Leider haben sie nicht geholfen, da ich sie nicht zur Arbeit bringen konnte. Ich frage mich, ob die Post-Autoren die Befehle selbst ausprobiert haben, bevor sie veröffentlicht wurden, da ich mir jetzt nicht vorstellen kann, wie sie funktionieren könnten - hier ist ein Test, den ich lokal auf meinem Ubuntu 10.04-PC durchgeführt habe (und ich breche jedes Mal mit Strg-C, wenn ich das sehe Passwortabfrage erscheint):
$ 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
Soweit --username/--password
auf svn
Kommandozeile betrifft - das macht nichts mit svn+ssh
, weil es zu ssh
fragen, nicht svn
:
svn - Subversion ignoriert die Optionen "--password" und "--username" - Stapelüberlauf
Die Eingabeaufforderung sieht nicht so aus, als würde Subversion Sie nach einem Passwort fragen. Es sieht so aus, als würde ssh nach einem Passwort fragen.
Wie das Protokoll zeigt, ssh
akzeptiert es selbst kein " username:password@...
" in der URL - und auch nicht svn
. Warum es akzeptabel ist, nur den Benutzernamen in der URL in zu verwenden svn
, wird wahrscheinlich erklärt in ~/.subversion/config
:
### (Wenn die URL einen Benutzernamen enthält, wird der Hostname
als @ an den Tunnelagenten übergeben.)
Beachten Sie, dass nichts darüber gesagt wird <user>:<pass>@<hostname>
.
Dank der Seite Subversion über SVN + SSH auf Debian wurde mir endlich klar, dass es eine SVN_SSH
Umgebungsvariable gibt, die ~/.subversion/config
für den (ich denke) ssh-Tunnel verwendet wird. und das eröffnet schließlich die Möglichkeit, das Programm sshpass
zu verwenden, um das Passwort auf eine solche Weise zu behandeln:
$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
Checked out revision 0.
Zumindest bin ich froh, dass ich endlich eine Lösung gefunden habe, die für mich funktioniert - hoffe, das hilft auch jemand anderem,
Prost!
Sie können auch den Benutzernamen und das Passwort der angegebenen Schalter verwenden .
Siehe Befehlszeilenauthentifizierung .
Ich denke, die Verwendung von sshpass (unter Linux) ist der beste Weg, dies zu erreichen.
Installieren Sie sshpass
$ sudo apt-get install sshpass
Legen Sie die temporäre Umgebungsvariable fest
$ export SSHPASS=*yourpass*
Bearbeiten Sie die SVN-Konfigurationsdatei
$ nano ~/.subversion/config
Zum Schluss kommentieren Sie add sshpass -e
to ssh line vor dem ssh
Befehl
ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no