bash-completion можно установить через многие менеджеры пакеты (см. здесь). Вы можете установить его с помощью apt-get install bash-completion или yum install bash-completion и т.д.
+
Приведенные выше команды создадут файл /usr/share/bash-completion/bash_completion, который является основным скриптом bash-completion. Возможно, вам потребуется вручную подключить этот файл в ~/.bashrc (необходимость выполнять эту операцию зависит от используемого менеджера пакетов).
+
Чтобы убедиться, что всё работает, перезагрузите оболочку и выполните команду type _init_completion. Если команда отработала успешно, установка сделана правильно, в противном случае добавьте следующее содержимое в файл ~/.bashrc:
+
source /usr/share/bash-completion/bash_completion
+
Перезагрузите вашу оболочку и убедитесь, что bash-completion правильно установлен, выполнив команду type _init_completion.
+
Включение автодополнения ввода kubectl
+
Теперь нужно убедиться, что скрипт дополнения ввода kubectl выполняется во всех сессиях командной оболочки. Есть два способа сделать это:
+
Добавьте запуск скрипта дополнения ввода в файл ~/.bashrc:
Она работает по принципу торрент клиентов. В режиме реального времени синхронизируются данные всех клиентов, которые пожелали синхронизировать какую-то директорию. Клиенты есть под все популярные системы, в том числе на смартфонах.
+
Работает примерно так. Ставите клиент на какую-то систему и добавляете туда папку для синхронизации. Клиент автоматически связывается с публичными централизованными релеями или серверами-анонсерами. Их можно поднимать свои. Клиенту назначается уникальный id.
+
Далее такой же клиент ставится на другую систему. Он так же регистрируется в общей сети и получает свой id. Дальше на первом клиенте вы добавляете по id в доверенные системы второй и расшариваете для него папку. На втором клиенте вы видите, что вас добавили и добавляете это устройство в доверенные к себе. А так же принимаете от первого клиента директорию для синхронизации.
+
И всё! После этого начинается двухсторонняя синхронизация этой директории. Сюда же можно добавить еще несколько систем. Таким образом все они будут синхронизировать одну и ту же директорию. Если вы не хотите соединяться через публичные релеи, можете поднять свой. Любо просто настраивать подключения по ip.
+
Система мне понравилась, ставил на винду. Настроил и разобрался быстро. Интересный принцип синхронизации. Не знаю, насколько надежно и быстро будет работать. Подозреваю, что при большом количестве файлов могут быть проблемы, как и у всех программ подобного рода. Тысяч 500 файлов загрузить и все повиснет или будет куча конфликтов. Но для не сильно больших объемов и количества файлов по идее должно работать нормально. Можно так свои файлы между устройствами шарить.
+
+
diff --git a/image.png b/image.png
new file mode 100644
index 0000000..d345a06
Binary files /dev/null and b/image.png differ
diff --git a/image2022-8-11_11-6-39.png b/image2022-8-11_11-6-39.png
new file mode 100644
index 0000000..a7f43fe
Binary files /dev/null and b/image2022-8-11_11-6-39.png differ
diff --git a/sysadmin/ssh-auth.md b/sysadmin/ssh-auth.md
new file mode 100644
index 0000000..24ac4c2
--- /dev/null
+++ b/sysadmin/ssh-auth.md
@@ -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
+```
+Удачной работы!
+