So you have two computers in the same building, and you want them to share
the same synchronised folder, communicating directly with each other.

This is incredibly easy to set up with the git annex assistant.

Let's say the two computers are your computer and your friend's computer.
We'll start on your computer, where you open up your git annex dashboard.

[[!img addrepository.png alt="Add another repository button"]]

`*click*`

[[!img pairing.png alt="Pair with another computer"]]

`*click*`

Now the hard bit. You have to think up a secret phrase, and type it in,
(and perhaps get the spelling correct).

[[!img secret.png alt="Enter secret phrase"]]

Now your computer is in pairing mode. When your friend looks at her git
annex dashboard, she sees something like this.

[[!img pairrequest.png alt="Pair request"]]

`*click*`

[[!img secretempty.png alt="Enter same secret phrase"]]

Now it's up to you to let her know what the secret is. As soon as she
enters it, both your computers will be paired, and will begin to sync their
git-annex folders. Just like that you can share files.

----

## Requirements

For local pairing to work, you must have sshd (ssh server daemon) installed and working on all machines involved. That means you must allow at least local connections to sshd. On most Linux distributions, sshd is packaged in either openssh (openSUSE) or openssh-server (Debian). 

It is highly recommended that you disable root login, disable password login to sshd and just enable key based authentication instead. No one will be able to login without your key.

To disable root, after installing sshd, edit the sshd config (usually /etc/ssh/sshd_config file) and disable root login by adding:

    PermitRootLogin no

Restart sshd. See man sshd_config for details.

To disable password login and enable key based authentication, edit the sshd config (just like above) by uncommenting and changing the following options:

    ChallengeResponseAuthentication no
    PasswordAuthentication no
    UsePAM no
    
    PubkeyAuthentication yes

Restart sshd. See man sshd_config for details.

You can also restrict login to your local network only (not allow internet users from trying to log into your computer). Edit the hosts.deny file (usually /etc/hosts.deny) by adding the following:

    sshd : ALL EXCEPT LOCAL

Do note that restricting login to your local network may or may not block git-annex. Also note that this will not work on Mac OSX because Apple decided to disable this feature and replace it with a crippled version made by Apple.

## Tips

Something to keep in mind, especially if pairing doesn't seem to be
working, is that the two computers need to be on the same network for this
pairing process to work. Sometimes a building will have more than one
network inside it, and you'll need to connect them both to the same one.
Make sure the wireless network name is the same, or that they're both
plugged into the same router.

Also, the file sharing set up by this pairing only works when both
computers are on the same network. If you go on a trip, any files you
edit will not be visible to your friend until you get back. 

To get around this, you'll often also want to set up
[[jabber_pairing|share_with_a_friend_walkthrough]], and a server
in the cloud, which they can use to exchange files while away.

And also, you can pair with as many other computers as you like, not just
one!

## What does pairing actually do behind the scenes?

It ensures that both repositories have correctly configured 
[[remotes|walkthrough/adding_a_remote]] pointing to each other.
If you have already configured this manually, you do not need to
perform pairing.
