From 84525b072670e011161f3fbfa195e5b541d3b4b5 Mon Sep 17 00:00:00 2001 From: tiyn Date: Thu, 13 Apr 2023 02:05:47 +0200 Subject: [PATCH] git/ssh: extended git usage with ssh clone --- wiki/git.md | 41 +++++++++++++++++++++++++++++++++++++---- wiki/linux/ssh.md | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 67 insertions(+), 8 deletions(-) diff --git a/wiki/git.md b/wiki/git.md index ceb6982..4490072 100644 --- a/wiki/git.md +++ b/wiki/git.md @@ -13,10 +13,7 @@ The client is pretty simple to understand. With only a handfull of commands you should be able to get your versioning going. For servers with web interfaces there are different cli tools to control it without using a browser. -For most linux distributions it is packaged with the `git` package - -There is also an interactive -[fixup guide by Seth Robertson](https://sethrobertson.github.io/GitFixUm/fixup.html). +For most linux distributions it is packaged with the `git` package. ### Server @@ -45,6 +42,11 @@ If you don't need a bloated web-interface a more basic approach is more than eno This section addresses various use cases and problems solvable with git. +There is also an interactive +[fixup guide by Seth Robertson](https://sethrobertson.github.io/GitFixUm/fixup.html). + +For Linux specific usage refer to the [corresponding entry](git) + ### Ignore files having local changes If you need to make changes to a file that are local you can run @@ -53,3 +55,34 @@ Following this the file won't show up as having changes from the upstream. Note that files tagged with this command are checked out sparsly, so you need to watch out for changes yourself if there are any. To revert this run `config update-index --no-skip-worktree `. + +### Authentication via SSH + +Authentication by default is done via a username and a password. +For some services such as Github. +it is not possible to use password as an authentication method. +The other possibility to authenticate to git is by using +[SSH](/wiki/linux/ssh.md). + +For this a +[SSH certificate has to be created](/wiki/linux/ssh.md#generate-new-keys) and +[added to the authentication agent](/wiki/linux/ssh.md#adding-keys-to-authentication-agent). +Afterwards it the public SSH key to be added to the git server. +For Github there is +[a guide on that topic](https://docs.github.com/en/get-started/getting-started-with-git/why-is-git-always-asking-for-my-password). + +Following these the git repositories have to be cloned in a special way to use +SSH instead of password and username. +The following shows both the normal way and the SSH way to clone git +repositories. + +```ssh +git clone ssh://git@github.com:tiyn/wiki +git clone https://github.com/tiyn/wiki +``` + +By using the SSH config file the clone command can be shortened to +`git clone github:tiyn/wiki`. +For this follow the +[corresponding section in the SSH entry](/wiki/linux/ssh.md#shorten-ssh-connection-commands). +Set `Host` to `github`, `HostName` to `github.com` and `User` to `git`. diff --git a/wiki/linux/ssh.md b/wiki/linux/ssh.md index 24513a4..148b3a2 100644 --- a/wiki/linux/ssh.md +++ b/wiki/linux/ssh.md @@ -5,17 +5,32 @@ In this article it is assumed that `openssh` is used. ## Usage -### Generate new keys +### Generate New Keys To generate new ssh keys simply run `ssh-keygen -t ed25519` or `ssh-keygen -t rsa -b 4096`. -### Enable root login via SSH +The keys can then be added to the authentication agent by as described in the +[corresponding article](#adding-keys-to-authentication-agent) + +### Adding Keys to Authentication Agent + +The following line will add a key to the authentication agent. + +```ssh +ssh-add id_rsa +``` + +Depending on the name of the certificate inside the `~/.ssh` folder the name +`id_rsa` can vary. +For example `id_ed25519` is the name if the first generation option was chosen. + +### Enable Root Login via SSH Edit the `/etc/ssh/sshd_config` and change the line containing `PermitRootLogin` to `PermitRootLogin yes`. -### Add login via SSH public key +### Add Login via SSH Public Key To enable easy login without password you can add the contents of the file `~/.ssh/id_rsa.pub` from your local machine to the file `~/.ssh/authorized_keys` @@ -26,7 +41,7 @@ You can use the modified command below for ease of use: cat ~/.ssh/id_rsa.pub | ssh username@server 'cat >> ~/.ssh/authorized_keys' ``` -### Mount directory with sshfs +### Mount Directory With SSHFS To mount a directory (in this case called `directory`) from a remote server (in this case called `server` also can be substituted by something like @@ -35,3 +50,14 @@ To mount a directory (in this case called `directory`) from a remote server ```sh sshfs server:/directory mountpoint ``` + +### Shorten SSH Connection Commands + +By adding the following lines to the file `~/.ssh/config` the command of an SSH +connection can be shortened from `ssh user@server.tld` to `ssh server`. + +```txt +Host server + HostName server.tld + User user +```