Ssh config git linux

4.4 Git на сервере — Настраиваем сервер

Давайте рассмотрим настройку доступа по SSH на стороне сервера. В этом примере мы будем использовать метод authorized_keys для аутентификации пользователей. Мы подразумеваем, что вы используете стандартный дистрибутив Linux типа Ubuntu.

Вместо ручного копирования и установки открытых ключей, многое из описанного ниже может быть автоматизировано за счёт использования команды ssh-copy-id .

Для начала создадим пользователя git и каталог .ssh для этого пользователя:

$ sudo adduser git $ su git $ cd $ mkdir .ssh && chmod 700 .ssh $ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

Затем вам нужно добавить открытые SSH-ключи разработчиков в файл authorized_keys пользователя git . Предположим, у вас уже есть несколько таких ключей и вы сохранили их во временные файлы. Напомним, открытый ключ выглядит примерно так:

$ cat /tmp/id_rsa.john.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq dAv8JggJICUvax2T9va5 gsg-keypair

Вы просто добавляете их в файл .ssh/authorized_keys в домашнем каталоге пользователя git :

$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys $ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys $ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys

Теперь вы можете создать пустой репозиторий для них, запустив git init с параметром —bare , что инициализирует репозиторий без рабочего каталога:

$ cd /srv/git $ mkdir project.git $ cd project.git $ git init --bare Initialized empty Git repository in /srv/git/project.git/

После этого Джон, Джози или Джессика могут отправить первую версию их проекта в этот репозиторий, добавив его как удалённый и отправив соответствующую ветку. Заметьте, что кто-то должен заходить на сервер и создавать голый репозиторий каждый раз, когда вы хотите добавить проект. Пусть gitserver — имя хоста сервера, на котором вы создали пользователя git и репозиторий. Если он находится в вашей внутренней сети и вы создали DNS запись для gitserver , указывающую на этот сервер, то можно использовать следующие команды как есть (считая что myproject это существующий проект с файлами):

# На компьютере Джона $ cd myproject $ git init $ git add . $ git commit -m 'Initial commit' $ git remote add origin git@gitserver:/srv/git/project.git $ git push origin master

Теперь все остальные могут клонировать его и отправлять в него изменения:

$ git clone git@gitserver:/srv/git/project.git $ cd project $ vim README $ git commit -am 'Fix for README file' $ git push origin master

Этим способом вы можете быстро получить Git-сервер с доступом на чтение/запись для небольшой группы разработчиков.

Заметьте, что теперь все эти пользователи могут заходить на сервер как пользователь git . Чтобы это предотвратить, нужно изменить ему оболочку на что-то другое в файле /etc/passwd .

Вы можете легко ограничить пользователя git только действиями, связанными с Git, с помощью ограниченной оболочки git-shell , поставляемой вместе с Git. Если указать её в качестве командного интерпретатора для пользователя git , то он не сможет получить доступ к обычной командной оболочке на вашем сервере. Для её использования, укажите git-shell вместо bash или csh для пользователя git . Для этого вы должны сначала добавить git-shell в /etc/shells если её там ещё нет:

$ cat /etc/shells # посмотрим, присутствует ли `git-shell`. Если нет. $ which git-shell # проверим, что `git-shell` установлена. $ sudo -e /etc/shells # и добавим путь к `git-shell` из предыдущей команды

Теперь можно изменить оболочку для пользователя используя chsh -s :

$ sudo chsh git -s $(which git-shell)

Теперь пользователь git может использовать SSH соединение только для работы с репозиториями Git и не может зайти на машину. Если вы попробуете войти в систему, то вход будет отклонён:

$ ssh git@gitserver fatal: Interactive git shell is not enabled. hint: ~/git-shell-commands should exist and have read and execute access. Connection to gitserver closed.

На текущий момент пользователи всё ещё могут использовать перенаправление порта SSH для доступа к другим Git серверам, к которым текущий может подключиться. Если это нужно отключить, вы можете добавить следующие опции в файл authorized_keys перед теми ключами, для которых нужно применить это ограничение:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty

В результате файл будет выглядеть следующим образом:

$ cat ~/.ssh/authorized_keys no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6h PB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541N YsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcC IicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBd LQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJ ICUvax2T9va5 gsg-keypair no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEwENNMomTboYI+LJieaAY16qiXiH3wuvENhBG. 

Теперь сетевые команды Git будут работать, но пользователи не смогут заходить на сервер. Вы также можете создать подкаталог в домашнем каталоге пользователя git , чтобы немного изменить поведение git-shell . Например, вы можете ограничить команды Git, которые сервер будет принимать или сообщение, которое увидят пользователи если попробуют зайти по SSH. Для получения дополнительной информации по настройке оболочки запустите команду git help shell .

Читайте также:  Amazon linux install docker

Источник

Ssh config git linux

  • How to maintain polyglot persistence for microservices Managing microservice data may be difficult without polyglot persistence in place. Examine how the strategy works, its challenges.
  • Top developer relations trends for building stronger teams Learn about enterprise trends for optimizing software engineering practices, including developer relations, API use, community .
  • 5 noteworthy challenges of automotive software development Modern cars are loaded with technology, but creating in-vehicle applications isn’t always a cakewalk. Here are five unique .
  • The basics of implementing an API testing framework With an increasing need for API testing, having an efficient test strategy is a big concern for testers. How can teams evaluate .
  • The potential of ChatGPT for software testing ChatGPT can help software testers write tests and plan coverage. How can teams anticipate both AI’s future testing capabilities .
  • Retail companies gain DORA metrics ROI from specialist tools DORA metrics and other measures of engineering efficiency are popping up in add-ons to existing DevOps tools. But third-party .
  • How to create and manage Amazon EBS snapshots via AWS CLI EBS snapshots are an essential part of any data backup and recovery strategy in EC2-based deployments. Become familiar with how .
  • Prices for cloud infrastructure soar 30% Tough macroeconomic conditions as well as high average selling prices for cloud computing and storage servers have forced .
  • Deploy a low-latency app with AWS Local Zones in 5 steps Once you decide AWS Local Zones are right for your application, it’s time for deployment. Follow along in this step-by-step video.
  • XSS zero-day flaw in Zimbra Collaboration Suite under attack A manual workaround is currently available for a cross-site scripting vulnerability in Zimbra Collaboration Suite, though a patch.
  • Rein in cybersecurity tool sprawl with a portfolio approach Market consolidation can counterintuitively exacerbate cybersecurity tool sprawl, with many products offering overlapping .
  • Microsoft: Government agencies breached in email attacks While Microsoft mitigated the attacks and found no evidence of further access beyond the email accounts, the Outlook breaches .
  • AWS Control Tower aims to simplify multi-account management Many organizations struggle to manage their vast collection of AWS accounts, but Control Tower can help. The service automates .
  • Break down the Amazon EKS pricing model There are several important variables within the Amazon EKS pricing model. Dig into the numbers to ensure you deploy the service .
  • Compare EKS vs. self-managed Kubernetes on AWS AWS users face a choice when deploying Kubernetes: run it themselves on EC2 or let Amazon do the heavy lifting with EKS. See .
Читайте также:  Меняется время windows linux

Источник

How do I setup SSH key based authentication for GitHub by using ~/.ssh/config file?

I am trying to set up my SSH keys for GitHub and created a new SSH key for the same. I have managed to setup the SSH key but I wish to retain these settings and save them in the configuration file ~/.ssh/config which is not available. Where can I add this key path to retain the configuration?

2 Answers 2

Here is а short manual how to setup SSH key based authentication for GitHub. Note the CLI steps for GitLab are absolutely identical, just replace every occurrence of github with gitlab if you need.

1. Install the openssh-client if it is not already installed, and of course git :

sudo apt update && sudo apt install -y openssh-client git 

2. Create user’s ssh directory and a sub directory where your dedicated GitHub ssh key will be stored:

3. Generate the SSH key (the output key will have octal permissions 600 ):

ssh-keygen -t ed25519 -C 'your@email.com' -f ~/.ssh/github/id_ed25519 -q -N '' 
  • -q — silence ssh-keygen; -N » — empty (without) passphrase, you can assign one if you want. If it is passphrase protected key, you can add -a 256 (default is 16) to increase the security of the passphrase by decreasing its verification.

4. Copy the content of the file id_ed25519.pub , use the following command to output it:

cat ~/.ssh/github/id_ed25519.pub 

5. Go to your GitHub account and follow these steps:

  • From the drop-down menu in upper right corner select Settings.
  • Then from the menu at the left side select SSH and GPG keys.
  • Click on the New SSH Key button.
  • Type some meaningful for a Title and paste the content of ~/.ssh/github/id_ed25519.pub in the field Key.
  • Then click on the Add SSH Key button.
Читайте также:  Add ip address linux ip address

enter image description here

6. Create the ~/.ssh/config file, if it doesn’t already exist:

touch ~/.ssh/config chmod 600 ~/.ssh/config 

Edit the config file and add the following entry for the new SSH key:

Host github.com IdentityFile ~/.ssh/github/id_ed25519 

7. Test the setup. Use the following command:

On the question — Are you sure you want to continue connecting (yes/no)? — answer with yes. If everything went well you should receive a greeting message like this:

Hi pa4080! You've successfully authenticated, . 

How to use the SSH key.

1. If you have already cloned repository through HTTPS, by using a command as these:

git clone https://github.com/username/repository-name.git git clone git://github.com/username/repository-name 

Go inside the repository’s directory and execute the next command to allow work via SSH:

git remote set-url origin git@github.com:username/repository-name.git 

2. Direct clone a repository via SSH:

git clone git@github.com:username/repository-name.git 

3. In addition if you are using VSC it will work without problems with this setup. For already clonned repositories just use the Open Folder option and all VSC Git features will work.

Thanks to @k..a..b the examples in the answers were updated from using RSA key pair to using ED25519 which is more secure. Here are few references about that:

this file is not available by default. You have to create it. Please be aware SSH keys and ~/.ssh/config are separate files (with different purpose).

your SSH keys are stored in ~/.ssh (use ls -al ~/.ssh to see them all) and your SSH config is stored in the ~/.ssh/config . If you don’t have it feel free to use touch ~/.ssh/config to create it.

If you want to use your key with GitHub/Bitbucket/GitLab use the following:

Start the ssh-agent in the background:

Then add the SSH private key to the ssh-agent and store your passphrase (if created) in the keychain:

In the above case id_ed25519 is your private SSH key file. If you have a different name for your private key, likely because you used a different cryptographic algorithm (i.e. RSA or ECDSA ) just change it to your real private key file name.

If key pair is generated with RSA algorithm it should appears as follows:

Else, it will appears as so if keys are generated with ECDSA:

Источник

Оцените статью
Adblock
detector