Aug 21, 2012

f Comment

Use SSH as SVN Protocol Tunnel With TortoiseSVN

MenuSVN+SSH Between Eclipse and Amazon EC2
Unblock SVN Port 3690 in Amazon EC2
Install & Configure SVN on Ubuntu
Import an Existing Directory into SVN
Checkout an SVN Project For Web Server
Checkout an SVN Project In Eclipse For Development
Use SSH as SVN Protocol Tunnel With TortoiseSVN
Amazon If you'd like to use SSH as the SVN protocol tunnel scheme you've come to the right place. This complete tutorial will walk you through tunneling SVN communications with SSH security so that your communications with the SVN server are absolutely secure!

Some may be concerned whether doing so would slow down the SVN communications. The answer is yes, but if only work with source code then the effects are negligible. Just use SSH as SVN protocol tunnel scheme and if it slows you down too much then remove it!

Step 1: Install TortoiseSVN
Google and download and install TortoiseSVN. After you finish installation make sure C:/Program Files/TortoiseSVN/bin/TortoisePlink.exe exists. TortoisePlink.exe is the executable you'll need to make everything work.

Putty does NOT work!
You are advised to add SSH tunnel to your communication with the SVN server so that nobody can hijack your code. You don't want your award winning code to leak out do you?
Step 2: Generate a .ppk Key
If you haven't done it go to your AWS console and generate an RSA key pair. The private key ends in .pem. Download the private key and use PuTTYgen to generate the corresponding .ppk key. Put your key somewhere safe. Let's use C:/my-ec2-key.ppk for your .ppk key and C:/my-ec2-key.pem for your .pem key.

A .pem key is an RSA private key. A .ppk key is the equivalent key in a format that OpenSSH can understand. OpenSSH is an implementation of the SSH algorithm.
This should already be the case, but make sure your public key exists in /home/ubuntu/.ssh/authorized_keys. The public key should begin with 'ssh-rsa' and end with your key pair's name.
Step 3: Edit SVN Configuration File
If you are using Windows 7 or Windows Vista it should be located at C:\Users\\AppData\Roaming\Subversion\config. If you are using Windows XP it should be located at C:\Documents and Settings\%USERID%\Application Data\Subversion\config. Open it and add the following line:

ssh = C:/Program Files/TortoiseSVN/bin/TortoisePlink.exe -i C:/my-ec2-key.ppk
Save your changes. My subversion configuration file looks like this:
001### This file configures various client-side behaviors.
002###
003### The commented-out examples below are intended to demonstrate
004### how to use this file.
005 
006### Section for authentication and authorization customizations.
007[auth]
008### Set store-passwords to 'no' to avoid storing passwords in the
009### auth/ area of your config directory.  It defaults to 'yes'.
010### Note that this option only prevents saving of *new* passwords;
011### it doesn't invalidate existing passwords.  (To do that, remove
012### the cache files by hand as described in the Subversion book.)
013# store-passwords = no
014### Set store-auth-creds to 'no' to avoid storing any subversion
015### credentials in the auth/ area of your config directory.
016### It defaults to 'yes'.  Note that this option only prevents
017### saving of *new* credentials;  it doesn't invalidate existing
018### caches.  (To do that, remove the cache files by hand.)
019# store-auth-creds = no
020 
021### Section for configuring external helper applications.
022[helpers]
023### Set editor to the command used to invoke your text editor.
024###   This will override the environment variables that Subversion
025###   examines by default to find this information ($EDITOR,
026###   et al).
027# editor-cmd = editor (vi, emacs, notepad, etc.)
028### Set diff-cmd to the absolute path of your 'diff' program.
029###   This will override the compile-time default, which is to use
030###   Subversion's internal diff implementation.
031# diff-cmd = diff_program (diff, gdiff, etc.)
032### Set diff3-cmd to the absolute path of your 'diff3' program.
033###   This will override the compile-time default, which is to use
034###   Subversion's internal diff3 implementation.
035# diff3-cmd = diff3_program (diff3, gdiff3, etc.)
036### Set diff3-has-program-arg to 'true' or 'yes' if your 'diff3'
037###   program accepts the '--diff-program' option.
038# diff3-has-program-arg = [true | false]
039 
040### Section for configuring tunnel agents.
041[tunnels]
042### Configure svn protocol tunnel schemes here.  By default, only
043### the 'ssh' scheme is defined.  You can define other schemes to
044### be used with 'svn+scheme://hostname/path' URLs.  A scheme
045### definition is simply a command, optionally prefixed by an
046### environment variable name which can override the command if it
047### is defined.  The command (or environment variable) may contain
048### arguments, using standard shell quoting for arguments with
049### spaces.  The command will be invoked as:
050###   <command> <hostname> svnserve -t
051### (If the URL includes a username, then the hostname will be
052### passed to the tunnel agent as <user>@<hostname>.)  If the
053### built-in ssh scheme were not predefined, it could be defined
054### as:
055# ssh = $SVN_SSH ssh
056ssh = C:/Program Files/TortoiseSVN/bin/TortoisePlink.exe -i C:/my-ec2-key.ppk
057### If you wanted to define a new 'rsh' scheme, to be used with
058### 'svn+rsh:' URLs, you could do so as follows:
059# rsh = rsh
060### Or, if you wanted to specify a full path and arguments:
061# rsh = /path/to/rsh -l myusername
062### On Windows, if you are specifying a full path to a command,
063### use a forward slash (/) or a paired backslash (\\) as the
064### path separator.  A single backslash will be treated as an
065### escape for the following character.
066 
067### Section for configuring miscelleneous Subversion options.
068[miscellany]
069### Set global-ignores to a set of whitespace-delimited globs
070### which Subversion will ignore in its 'status' output, and
071### while importing or adding files and directories.
072# global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store
073### Set log-encoding to the default encoding for log messages
074# log-encoding = latin1
075### Set use-commit-times to make checkout/update/switch/revert
076### put last-committed timestamps on every file touched.
077# use-commit-times = yes
078### Set no-unlock to prevent 'svn commit' from automatically
079### releasing locks on files.
080# no-unlock = yes
081### Set enable-auto-props to 'yes' to enable automatic properties
082### for 'svn add' and 'svn import', it defaults to 'no'.
083### Automatic properties are defined in the section 'auto-props'.
084# enable-auto-props = yes
085 
086### Section for configuring automatic properties.
087[auto-props]
088### The format of the entries is:
089###   file-name-pattern = propname[=value][;propname[=value]...]
090### The file-name-pattern can contain wildcards (such as '*' and
091### '?').  All entries which match will be applied to the file.
092### Note that auto-props functionality must be enabled, which
093### is typically done by setting the 'enable-auto-props' option.
094# *.c = svn:eol-style=native
095# *.cpp = svn:eol-style=native
096# *.h = svn:eol-style=native
097# *.dsp = svn:eol-style=CRLF
098# *.dsw = svn:eol-style=CRLF
099# *.sh = svn:eol-style=native;svn:executable
100# *.txt = svn:eol-style=native
101# *.png = svn:mime-type=image/png
102# *.jpg = svn:mime-type=image/jpeg
103# Makefile = svn:eol-style=native
Step 4: Make sure port 22 is NOT Blocked!
If you haven't in your AWS control panel add a TCP rule that opens up port 22 for public access. Again here's the screenshot:

Amazon EC2 Unblock SVN Server Port In Security Groups

Step 5: Checkout Files from SVN!
Install Subclipse if you haven't. Inside Eclipse in PHP Explorer right click your mouse and select New -> Other and pick SVN. Here's a screen shot:

Eclipse SVN Checkout Wizard Dialog

Click Next. Select 'Create a New Repository' and click Next. In the Url field type 'svn+ssh://ubuntu@23.2.1.2/svnrepos/repository'. Click Next and everything should just work. If you are prompted with a dialog form then enter your user name 'ubuntu' and private key file path 'C:/my-ec2-key.pem'. If it doesn't work try 'C:/my-ec2-key.ppk' as the key file path.

Does /svnrepos/conf/passwd still matter? Now you are using RSA key infrastructure to identify yourself. When Eclipse tries to connect to the SVN server it uses C:/my-ec2-key.ppk (your private key) in the encrypted communication with the SSH server, which uses the public keys in /home/ubuntu/.ssh/authorized_keys. Therefore /svnrepos/conf/passwd NO longer applies. You can remove the line 'ubuntu = ubuntupassword' and everything would still work.
If you have any questions let me know and I will do my best to help you!

◀ Checkout an SVN Project In Eclipse For Development
Please leave a comment here!
One Minute Information - by Michael Wen
ADVERTISING WITH US - Direct your advertising requests to Michael