docs: add all untracked content
parent
d0eaed9991
commit
d24f740bb2
|
|
@ -0,0 +1,11 @@
|
||||||
|
<!--
|
||||||
|
title: DevOps
|
||||||
|
description:
|
||||||
|
published: true
|
||||||
|
date: 2023-11-03T08:58:31.113Z
|
||||||
|
tags:
|
||||||
|
editor: ckeditor
|
||||||
|
dateCreated: 2023-11-03T08:57:53.006Z
|
||||||
|
-->
|
||||||
|
|
||||||
|
<p>Главная страница раздела DevOps</p>
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
<!--
|
||||||
|
title: bash-completion для kubectl
|
||||||
|
description:
|
||||||
|
published: true
|
||||||
|
date: 2023-11-03T14:02:57.117Z
|
||||||
|
tags: bash, kubectl
|
||||||
|
editor: ckeditor
|
||||||
|
dateCreated: 2023-11-03T08:55:30.344Z
|
||||||
|
-->
|
||||||
|
|
||||||
|
<h3>Установка bash-completion</h3>
|
||||||
|
<p>bash-completion можно установить через многие менеджеры пакеты (см. <a href="https://github.com/scop/bash-completion#installation">здесь</a>). Вы можете установить его с помощью <code>apt-get install bash-completion</code> или <code>yum install bash-completion</code> и т.д.</p>
|
||||||
|
<p>Приведенные выше команды создадут файл <code>/usr/share/bash-completion/bash_completion</code>, который является основным скриптом bash-completion. Возможно, вам потребуется вручную подключить этот файл в <code>~/.bashrc</code> (необходимость выполнять эту операцию зависит от используемого менеджера пакетов).</p>
|
||||||
|
<p>Чтобы убедиться, что всё работает, перезагрузите оболочку и выполните команду <code>type _init_completion</code>. Если команда отработала успешно, установка сделана правильно, в противном случае добавьте следующее содержимое в файл <code>~/.bashrc</code>:</p>
|
||||||
|
<pre><code class="language-plaintext">source /usr/share/bash-completion/bash_completion</code></pre>
|
||||||
|
<p>Перезагрузите вашу оболочку и убедитесь, что bash-completion правильно установлен, выполнив команду <code>type _init_completion</code>.</p>
|
||||||
|
<h3>Включение автодополнения ввода kubectl</h3>
|
||||||
|
<p>Теперь нужно убедиться, что скрипт дополнения ввода kubectl выполняется во всех сессиях командной оболочки. Есть два способа сделать это:</p>
|
||||||
|
<p>Добавьте запуск скрипта дополнения ввода в файл <code>~/.bashrc</code>:</p>
|
||||||
|
<pre><code class="language-plaintext">echo 'source <(kubectl completion bash)' >>~/.bashrc</code></pre>
|
||||||
|
<p>Добавьте скрипт дополнения ввода в директорию <code>/etc/bash_completion.d</code>:</p>
|
||||||
|
<pre><code class="language-plaintext">kubectl completion bash >/etc/bash_completion.d/kubectl</code></pre>
|
||||||
|
<p>Если у вас определён псевдоним для kubectl, вы можете интегрировать его с автодополнением оболочки:</p>
|
||||||
|
<pre><code class="language-plaintext">echo 'alias k=kubectl' >>~/.bashrc
|
||||||
|
echo 'complete -F __start_kubectl k' >>~/.bashrc</code></pre>
|
||||||
|
<p><strong>Примечание:</strong> Все скрипты дополнения ввода bash-completion находятся в <code>/etc/bash_completion.d</code>.</p>
|
||||||
|
<p>Оба подхода эквивалентны. После перезагрузки вашей оболочки автодополнение ввода для kubectl должно работать.</p>
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<!--
|
||||||
|
title: bash-completion автодополнение
|
||||||
|
description:
|
||||||
|
published: true
|
||||||
|
date: 2023-11-03T08:47:55.739Z
|
||||||
|
tags: bash
|
||||||
|
editor: ckeditor
|
||||||
|
dateCreated: 2023-11-03T08:47:49.396Z
|
||||||
|
-->
|
||||||
|
|
||||||
|
<h3>Устанавливаем из официальных репозиториев</h3>
|
||||||
|
<p><code>apt install bash-completion</code></p>
|
||||||
|
<p> </p>
|
||||||
|
<h5><strong>Настройка автозаполнения Bash</strong></h5>
|
||||||
|
<p>Если все прошло успешно, то у вас должен появится файл <code><strong>bash_completion.sh</strong></code>. Он расположен в <code><strong>/etc/profile.d/</strong></code> </p>
|
||||||
|
<p>Чтобы убедиться в этом, выполните эту команду.</p>
|
||||||
|
<figure class="image image_resized" style="width:43.89%;"><img src="/image.png"></figure>
|
||||||
|
<p>Чтобы применить изменения и тем самым включить желаемое автозаполнение, нам требуется добавить несколько вещей в <code><strong>~/.bashrc</strong></code>.</p>
|
||||||
|
<p>Мы можем либо скопировать содержимое скрипта в конец упомянутого файла, либо просто перенести его в файл.</p>
|
||||||
|
<p><code>echo "source /etc/profile.d/bash_completion.sh" >> ~/.bashrc</code></p>
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
<!--
|
||||||
|
title: Syncthing - резервное копирование
|
||||||
|
description:
|
||||||
|
published: true
|
||||||
|
date: 2023-11-02T11:55:30.610Z
|
||||||
|
tags: syncthing, backup
|
||||||
|
editor: ckeditor
|
||||||
|
dateCreated: 2023-11-02T11:52:22.718Z
|
||||||
|
-->
|
||||||
|
|
||||||
|
<p>Тестировал на днях интересную программу для синхронизации файлов и организации бэкапа - Syncthing.</p>
|
||||||
|
<p><a href="https://github.com/syncthing">https://github.com/syncthing</a></p>
|
||||||
|
<p>Она работает по принципу торрент клиентов. В режиме реального времени синхронизируются данные всех клиентов, которые пожелали синхронизировать какую-то директорию. Клиенты есть под все популярные системы, в том числе на смартфонах.</p>
|
||||||
|
<p>Работает примерно так. Ставите клиент на какую-то систему и добавляете туда папку для синхронизации. Клиент автоматически связывается с публичными централизованными релеями или серверами-анонсерами. Их можно поднимать свои. Клиенту назначается уникальный id.</p>
|
||||||
|
<p>Далее такой же клиент ставится на другую систему. Он так же регистрируется в общей сети и получает свой id. Дальше на первом клиенте вы добавляете по id в доверенные системы второй и расшариваете для него папку. На втором клиенте вы видите, что вас добавили и добавляете это устройство в доверенные к себе. А так же принимаете от первого клиента директорию для синхронизации.</p>
|
||||||
|
<p>И всё! После этого начинается двухсторонняя синхронизация этой директории. Сюда же можно добавить еще несколько систем. Таким образом все они будут синхронизировать одну и ту же директорию. Если вы не хотите соединяться через публичные релеи, можете поднять свой. Любо просто настраивать подключения по ip.</p>
|
||||||
|
<p>Система мне понравилась, ставил на винду. Настроил и разобрался быстро. Интересный принцип синхронизации. Не знаю, насколько надежно и быстро будет работать. Подозреваю, что при большом количестве файлов могут быть проблемы, как и у всех программ подобного рода. Тысяч 500 файлов загрузить и все повиснет или будет куча конфликтов. Но для не сильно больших объемов и количества файлов по идее должно работать нормально. Можно так свои файлы между устройствами шарить.</p>
|
||||||
|
<p> </p>
|
||||||
|
<figure class="image"><img src="/image2022-8-11_11-6-39.png"></figure>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 451 KiB |
|
|
@ -0,0 +1,153 @@
|
||||||
|
---
|
||||||
|
title: Авторизация по ключу rsa по ssh
|
||||||
|
description:
|
||||||
|
published: true
|
||||||
|
date: 2023-11-03T12:41:49.500Z
|
||||||
|
tags: ssh, rsa
|
||||||
|
editor: markdown
|
||||||
|
dateCreated: 2023-11-03T12:36:39.209Z
|
||||||
|
---
|
||||||
|
|
||||||
|
# SSH авторизация по ключам
|
||||||
|
|
||||||
|
В интернете можно найти множество иснтрукций о том как настроить *ssh авторизацию по ключам* для использования с репозиториями, удаленным администрированием, различными программами контроля версий и т.д.
|
||||||
|
Встречаются даже такие извращения как использование Putty агента в связке с Tortoise Git на основе Putty сессий. Варианты с генерацией ключа с помощью Putty, конвертирование из одного формата в другой и подсовывание в Tortoise Git я, изрядно измучившись, тоже выкинул. Даже на самом GitHub лежит мануал с использованием агента ключей.
|
||||||
|
|
||||||
|
Перелопатив кучу мануалов я решил что мне нужен универсальный способ. И похоже мне удалось такой найти.
|
||||||
|
|
||||||
|
Итак, мне нужно чтобы работало:
|
||||||
|
* из любых терминалов (cmd, PowerShell, Git-bash, Git-cmd)
|
||||||
|
* с любыми shell (cmd, sh, bash, zsh т.д.)
|
||||||
|
* c любыми встроенными в терминалы или shell утилитами (ssh, scp, sftp и т.д.)
|
||||||
|
* со всеми репозиториями (GitHub, GitLab, Gitea)
|
||||||
|
* с различными GUI (TortoiseGit, VSCode, Altium Designer и пр.)
|
||||||
|
* без использования агентов ключей (ssh-agent или Putty)
|
||||||
|
* одинаково настраивалось как в Windows, так и в Linux.
|
||||||
|
* на одну машину должен приходиться один ключ, чтобы не настраивать отдельно для каждой утилиты/приложения/IDE
|
||||||
|
* один ключ для работы с репозиториями и доступом к удаленным серверам
|
||||||
|
|
||||||
|
Как оказалось чтобы все это реализовать нужно было не гуглить мануалы, а читать **man ssh**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Для работы с SSH в windows будем использовать OpenSSH. Ставить отдельно его не надо т.к. OpenSSH идет в комплекте с Git. Ставим его в первую очередь.
|
||||||
|
|
||||||
|
Если же Git уже установлен, то идем дальше...
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1. Открываем терминал и создаем ключ нашей локальной системы.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ ssh-keygen -t rsa
|
||||||
|
```
|
||||||
|
На все вопросы нажимаем "Enter", отказываясь от ключевой фразы.
|
||||||
|
|
||||||
|
Как результат в домашней папке пользователя будет создана ключевая пара:
|
||||||
|
- .ssh/id_rsa (закрытый ключ)
|
||||||
|
- .ssh/id_rsa.pub (открытый ключ)
|
||||||
|
|
||||||
|
Закрытый ключ мы не трогаем. Он секретный и остается только на этой машние.
|
||||||
|
Открытый ключ мы используем для помещения в репозитории и удаленные сервера.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Добавляем ключ в ~/.ssh/config
|
||||||
|
|
||||||
|
Поскольку мы не будем пользоваться никакими агентами ключей, то для пользования репозиториями, нужно прописать данный ключ в ~/.ssh/config в качестве ипользуемого по умолчанию глобально.
|
||||||
|
|
||||||
|
Если этого файла нет, то создаем его и добавляем в него строчку:
|
||||||
|
```
|
||||||
|
IdentityFile ~/.ssh/id_rsa
|
||||||
|
```
|
||||||
|
~/.ssh/config вообще очень полезный файл. Рекомендую почитать что он еще умеет. Например туда можно прописать хосты типа:
|
||||||
|
```
|
||||||
|
Host site
|
||||||
|
HostName www.my-site.dyndns.org
|
||||||
|
Port 2222
|
||||||
|
User user
|
||||||
|
```
|
||||||
|
Тогда вместо такого:
|
||||||
|
```
|
||||||
|
$ ssh user@www.my-site.dyndns.org -p 2222
|
||||||
|
```
|
||||||
|
Можно писать так:
|
||||||
|
```
|
||||||
|
$ ssh site
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
### 3. Добавляем ключ на удаленные сервера Linux
|
||||||
|
|
||||||
|
Если ключ нужен только для работы с репозиториями, то переходим к следующему пункту.
|
||||||
|
|
||||||
|
Если есть программа ssh-copy-id (в Linux и Git-bash она есть), прописываем публичный ключ на удаленный сервер.
|
||||||
|
```
|
||||||
|
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip
|
||||||
|
```
|
||||||
|
Eсли ssh-copy-id нет, то можно сделать это вручную.
|
||||||
|
|
||||||
|
Вот последовательность действий:
|
||||||
|
- логинимся на удаленной машине
|
||||||
|
- добавляем свой ключ в файл authorized_keys
|
||||||
|
```
|
||||||
|
remote$ echo "содержимое файла открытого ключа" >> ~/.ssh/authorized_keys
|
||||||
|
```
|
||||||
|
- делаем правильные права (если файл только что был создан)
|
||||||
|
```
|
||||||
|
remote$ chmod 600 ~/.ssh/authorized_keys
|
||||||
|
```
|
||||||
|
- проверяем, что все работает, запускаем на локальном компьютере.
|
||||||
|
```
|
||||||
|
$ ssh user@server_ip
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
### 4. Добавляем ключ в репозитории
|
||||||
|
|
||||||
|
Для работы с репозиториями необходимо прописать туда публичный ключ.
|
||||||
|
Для этого копируем содержимое файла ~/.ssh/id_rsa.pub во все необходимые репозитории.
|
||||||
|
|
||||||
|
- GitHub: Settings -> SSH and GPG keys -> Nes SSH key
|
||||||
|
- GitLab: Preferences -> SSH Keys -> Add key
|
||||||
|
- Gitea: Settings -> SSH / GPG keys -> Add Key
|
||||||
|
|
||||||
|
В качестве имени ключа удобно указывать пользователя и имя машины.
|
||||||
|
|
||||||
|
**user@host**
|
||||||
|
|
||||||
|
Для тестирования авторизации можно запустить:
|
||||||
|
```
|
||||||
|
$ ssh -T git@github.com
|
||||||
|
```
|
||||||
|
Аналогично и для других репозиториев:
|
||||||
|
```
|
||||||
|
$ ssh -T git@repo_url
|
||||||
|
```
|
||||||
|
Что проверяю я:
|
||||||
|
```
|
||||||
|
$ ssh -T git@github.com
|
||||||
|
$ ssh -T git@git.fwdrd.ru
|
||||||
|
$ ssh -T git@gitlab.srv.mf-t.ru -p 2222
|
||||||
|
```
|
||||||
|
---
|
||||||
|
### 4. Настройка TortoiseGit
|
||||||
|
Чтобы TortiseGit переключился на использование OpenSSH надо в настройках
|
||||||
|
```
|
||||||
|
Settings -> Network -> SSH client
|
||||||
|
```
|
||||||
|
поменять клиент на
|
||||||
|
```
|
||||||
|
C:\Program Files\Git\usr\bin\ssh.exe
|
||||||
|
```
|
||||||
|
---
|
||||||
|
### PS (Linux)
|
||||||
|
|
||||||
|
Если все настроено но все равно спрашивает пароль, то надо проверить права:
|
||||||
|
```
|
||||||
|
~ 755
|
||||||
|
~/.ssh 700
|
||||||
|
~/.ssh/* 600
|
||||||
|
```
|
||||||
|
Удачной работы!
|
||||||
|
|
||||||
Loading…
Reference in New Issue