Setting up password-less connection in Netbeans

Following Setting up password-less connection with GitHub in TortoiseGit article, here are tips on how to setup password-less connection between your GitHub account and your local repository operated under Netbeans. The easiest way to setup password-less connection, is to do this on initial GitHub repo clone or pulling. And it will be presented this way, in following article.

Intro

Most important: Do not use method shown in my Setting up password-less connection with GitHub in TortoiseGit. For some reason (unknown to me) Netbeans can't work with keys generated by Puttygen. Use GitHub article on generating SSH keys instead.

If you're Windows user, you have to use Git Bash console, instead of regular cmd console (at least this article does not covers using it). It is available, when you install msysgit (look here for more details).

In normal conditions, you install msysgit prior or next to installing TortoiseGit, because it requires it. However, if you don't use TortoiseGit at all (for example you're fine with Netbeans internal Git client), you either have to install msysgit alone (to have access to Git Bash) or any other Windows port of Linux tools (like Cygwin for Windows) or you have to "fight" hard, translating paths and command from GitHub article to standard Windows cmd command-line.

Setup

OK. I assume you're, where GitHub article left you. That is, you've added your public key to your GitHub account (Step 3) and you've tested, that your private key (stored in path expressed in "Your identification has been saved in" message) is valid and can be used to login to GitHub without password (Step 4).

Git Bash gives Linux-like paths, even on Windows, so /c/Users/[you]/.ssh/id_rsa file (in "Your identification has been saved in" message) corresponds to C:\Users\[you]\.ssh\id_rsa, where [you] is your Windows user name. Decide at this step, whether you're going to leave your private key in this default folder or copy it (by any way) to another location. Keeping this file in default location (along with public key id_rsa.pub and known_hosts file) is recommended as long as you don't have good reasons for moving this file to another location (and/or renaming it).

Let's start with cloning GitHub repo as a new Netbeans project.

Follow these steps:

1. Start with Team > Git > Clone and specify GitHub repository's using SSH-like URL (usually it is something like git@github.com:[user]/[repository].git).

2. Enter git as user name, even if you see git@ in the beginning of URL. This is one of many Netbeans wakos. In some dialogs it is able to extract user name out of URL (automaticaly cuts of git@ from URL and place it in Username) and on some (like this) it don't. To make things even more crazy, even though you have git@ in URL, the entire thing won't work (at least in Netbeans 7.3) if you leave user field empty (Auth cancel error, whatever this means).

3. Select Private/Public Key option and enter (or browse) location of your private key (see above) into Private Key File. If you secured your private key with a passpharse (very recommended -- see here), enter it to the field below and tick Save Passpharse. Hit Next >.

4. Select remote branch in second step of this wizzard and set destination directory (to where GitHub repository should be clonned to) in the third step. Make sure, you're referencing an empty (or non-existing) directory as you can't clone to directory containing anything. Hit Finish.

5. Wait few seconds and click Create Project... in openned dialog box. Follow the standard way of adding new Netbeans project, selecting PHP Application with Existing Sources. Provide any information you want or you usually provide and finish adding new project process.

You're done!

If everything went without troubles, Netbeans will write all necessary data into your local copy meta files (.git folder). Next time you call on Team > Git > Remote > Push, to push your local changes to GitHub, you should not be asked for a password or passpharse. Your entire pushing process should be limited to serie of clicks on Next > and Finish.

Conlusion

Why cloning? What about existing local repositories?

Well... I had too many problems when trying to force Netbeans to use existing local copy of GitHub repository (created with TortiseGit), as well as SVN repository (created with TortoiseSVN) that I dropped the entire idea.

From now-on, if on any system I'm switching from TortoiseGit (or any other Git client) to Netbeans, I always comit and push all local changes, delete entire folder and clone it back (checkout in case of Subversion) using tools in Netbeans.

This is the quickest, least painful way.

Leave a Reply