How to set a central repository in Git
Background story
TODO ?
Getting started
In the folder you want your central repository run :
$ git clone --mirror git@github.com:host/path/to/repo.git # Create a bare repository from which you can update the origin one.In the folder where you will make a local copy or the central repository and start working, run this command :
$ git clone <username>@<server-adress>:/path/to/central/repo.git # Clone a copy from the central repository.Basically, this will make a ssh connection with the server and apply the git command which is git clone in that case.
And you're good to go !
Command on the bare repository
When you commit a lot of changed in your central repository and you're happy about the historic, you can run the following command:
$ git remote updateSetting up the client repository
Since you make an ssh connection every time you execute a git command, you will enter your server password a lot of times, aka
$ git push
<username>@<server-address>'s password:If you're fine with that, don't bother with this section. But if you find it annoying you can solve it.
Share a passphrase with the server
In order to avoid entering your password, you will have to generate a passphrase. But if you do not have one yet, this can be done using the following command.
$ ssh-keygen -t rsa -b 2048Follow the prompted instructions it's recommanded to use a passphrase and not leave it empty.
Once you've done it, you have to share it with the server. You can do that with :
$ ssh-copy-id <username>@<server-address>You will have to enter your password in order to log in the server. You can then log in the server and check the authorized_keys to see if the new one is added :
$ ssh '<username>@<server-address>'
$ cat .ssh/authorized_keysUse ssh-agent to store the passphrase for us
ssh-agent to store the passphrase for usIf you entered a passphrase in the ssh-keygen step, you should have the same problem that before. But instead of a password, it's now a passphrase that is required !
So we did not went far on our problem.
But luckily for us, there is a deamon that can helps us with passphrase : ssh-agent You can make sure your agent is running with (it will start it it if not already running) :
$ eval `ssh-agent -s` # Start the ssh-agent
Agent pid 7716You only have to run the following command :
$ ssh-add path/to/keyIt will prompt you to enter your passphrase. And just like with the password, you're done ! 🎉
You can make a test and run ssh '<username>@<server-address>'' to test if it works.
You should, in theory, not have to enter any passwords or passphrase !
Note: You can also run the below commands to make sure the ssh-agent has the right identities:
$ ssh-add -l
$ ssh-add -LRemove a ssh key added
You might have add a ssh key that wasn't the one you wanted to use for that server. To fix your mistake, you can remove the desired key in the file known_hosts and authorized_keys with:
sed -i 'Xd' <filename> # remove the `X` th line from the file.Useful commands
You can check information about the remote url you can run the following command
git config --get remote.origin.url # Return the remote url git remote show origin # Show the full output about remote stuffYou have a lot of control on the
ssh-agent. You can for example specify the lifetime of identities it hold with$ ssh-agent -t 1d # the agent will remember identities for a day $ ssh-add -t 1D # the agent will remember identities for a day
Using Fork
This can be also be accomplished quite easily with Fork git client. All you have to do is : 1. File > Configure SSH Keys... 2. In the dropdown menu, select the keys you want to use for this repository. You can also generate a new one if you wish. 3. When making a server command, you will have a prompt to emter your passphrase. 4. Once enter, you should be able to make other server commands without worrying about it again.
Aknowledgements
Last updated
Was this helpful?