diff --git a/DevOps.html b/DevOps.html new file mode 100644 index 0000000..bd7d7fa --- /dev/null +++ b/DevOps.html @@ -0,0 +1,11 @@ + + +

Главная страница раздела DevOps

diff --git a/DevOps/bash-completion.html b/DevOps/bash-completion.html new file mode 100644 index 0000000..4c16cf7 --- /dev/null +++ b/DevOps/bash-completion.html @@ -0,0 +1,27 @@ + + +

Установка bash-completion

+

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:

+
echo 'source <(kubectl completion bash)' >>~/.bashrc
+

Добавьте скрипт дополнения ввода в директорию /etc/bash_completion.d:

+
kubectl completion bash >/etc/bash_completion.d/kubectl
+

Если у вас определён псевдоним для kubectl, вы можете интегрировать его с автодополнением оболочки:

+
echo 'alias k=kubectl' >>~/.bashrc
+echo 'complete -F __start_kubectl k' >>~/.bashrc
+

Примечание: Все скрипты дополнения ввода bash-completion находятся в /etc/bash_completion.d.

+

Оба подхода эквивалентны. После перезагрузки вашей оболочки автодополнение ввода для kubectl должно работать.

diff --git a/Sysadmin.html b/Sysadmin.html new file mode 100644 index 0000000..8fb8d72 --- /dev/null +++ b/Sysadmin.html @@ -0,0 +1,20 @@ + + +

Устанавливаем из официальных репозиториев

+

apt install bash-completion

+

 

+
Настройка автозаполнения Bash
+

Если все прошло успешно, то у вас должен появится файл bash_completion.sh. Он расположен в /etc/profile.d/ 

+

Чтобы убедиться в этом, выполните эту команду.

+
+

Чтобы применить изменения и тем самым включить желаемое автозаполнение, нам требуется добавить несколько вещей в ~/.bashrc.

+

Мы можем либо скопировать содержимое скрипта в конец упомянутого файла, либо просто перенести его в файл.

+

echo "source /etc/profile.d/bash_completion.sh" >> ~/.bashrc

diff --git a/home.html b/home.html new file mode 100644 index 0000000..5053cd4 --- /dev/null +++ b/home.html @@ -0,0 +1,19 @@ + + +

Тестировал на днях интересную программу для синхронизации файлов и организации бэкапа - Syncthing.

+

https://github.com/syncthing

+

Она работает по принципу торрент клиентов. В режиме реального времени синхронизируются данные всех клиентов, которые пожелали синхронизировать какую-то директорию. Клиенты есть под все популярные системы, в том числе на смартфонах.

+

Работает примерно так. Ставите клиент на какую-то систему и добавляете туда папку для синхронизации. Клиент автоматически связывается с публичными централизованными релеями или серверами-анонсерами. Их можно поднимать свои. Клиенту назначается уникальный 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 +``` +Удачной работы! +