In my case, I want to do a SVN checkout:
svn co svn+ssh://10.106.191.164/home/svn/shproject
However, I want to have the password in that one line, so that it doesn't pop up.
svn co svn+ssh://username:email@example.com/home/svn/shproject
Given that you're using SSH, the preferred way is to use a public key for authorization, which saves the need of a password completely.
A guide for creating and installing the keys can be found here.
Infinitely better is to generate a keypair. As your local user:
$ ssh-keygen -t rsa
(accept all defaults)
Then take the contents of .ssh/id_rsa.pub and add it on the remote server to .ssh/authorized_keys Be very sure it is all pasted into the same line. Also be very sure the permissions of the .ssh directory are 600.
Then you should be able to ssh without being prompted for a password.
Instead of using a password you might want to have a look at a private/public key pair and have ssh use that. most linux distributions come with easy to use commands to create such a pair. this would however require access ti the server side (once) to deposit the public key file in your user's ~/.ssh/authorized_keys file.
Well, I do want to enter a password - I don't like relying on my password being saved somewhere; however, I do want to enter it once per set of svn+ssh commands; and often, you just want to do one
svn checkout - and have to enter tons of passwords anyways. It is in such a case I'd like to type a password only once.
So, only answers by @Boinst and @Marius were relevant for my use case; unfortunately, they didn't help, as I couldn't get them to work. I wonder if the post authors themselves tried the commands out before posting them, as now I cannot imagine how they could work - here's a test I did locally on my Ubuntu 10.04 PC (and I break with Ctrl-C, each time I see the password prompt appear):
$ svn --version | head -1 svn, version 1.6.6 (r40053) $ cd /tmp $ svnadmin create myrepo $ read -p 'ssh firstname.lastname@example.org? ' PASS ssh email@example.com? [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://firstname.lastname@example.org/tmp/myrepo myrepo-wc email@example.com'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://firstname.lastname@example.org/tmp/myrepo --non-interactive --trust-server-cert --username myself --password $PASS --no-auth-cache email@example.com's password: ^C svn: Network connection closed unexpectedly
As far as
svn command line is concerned - that doesn't matter with
svn+ssh, because it's
ssh asking, not
The prompt you're getting doesn't look like Subversion asking you for a password, it looks like ssh asking for a password.
Additionally, as the log shows,
ssh itself doesn't accept "
username:password@..." in the URL - and so neither does
svn. Why it is acceptable to use only username in the URL in
svn, is probably explained in
### (If the URL includes a username, then the hostname will be
### passed to the tunnel agent as @.)
Notice nothing is said about
Now, thanks to the page Subversion over SVN+SSH on Debian, I finally realized there is a
SVN_SSH environment variable used in
~/.subversion/config for the (I guess) ssh tunnel; and that finally opens up the possibility to use the program
sshpass to handle the password in such a one-way manner:
$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://firstname.lastname@example.org/tmp/myrepo myrepo-wc Checked out revision 0.
Well, at least I'm glad I finally found a solution that works for me - hope this helps someone else, too,
svn co svn+ssh://10.106.191.164/home/svn/shproject --non-interactive --trust-server-cert --username <username> --password <password> --no-auth-cache
You can also use the given switches username and password.
Refer Command-line authentication.
I think using sshpass (in Linux) is the best way to get this.
$ sudo apt-get install sshpass
Set the temporary environment variable
$ export SSHPASS=*yourpass*
Edit the svn config file
$ nano ~/.subversion/config
Finally comment out add
sshpass -e to ssh line, before the
ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no