es
Feedback
Bash Days | Linux | DevOps

Bash Days | Linux | DevOps

Ir al canal en Telegram

Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru

Mostrar más

📈 Análisis del canal de Telegram Bash Days | Linux | DevOps

El canal Bash Days | Linux | DevOps (@bashdays) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 23 797 suscriptores, ocupando la posición 5 708 en la categoría Tecnologías y Aplicaciones y el puesto 28 124 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 23 797 suscriptores.

Según los últimos datos del 16 junio, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -201, y en las últimas 24 horas de -10, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 20.40%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 11.53% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 4 855 visualizaciones. En el primer día suele acumular 2 744 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 17.
  • Intereses temáticos: El contenido se centra en temas clave como bashdays, linux, bash, docker, скрипт.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.r...

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 17 junio, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

23 797
Suscriptores
-1024 horas
-287 días
-20130 días
Archivo de publicaciones
В периоды праздников и больших распродаж растёт не только выручка, но и нагрузка на ИТ-системы компании. Например, если во вр
В периоды праздников и больших распродаж растёт не только выручка, но и нагрузка на ИТ-системы компании. Например, если во время праздников перестанет работать сервис по продаже билетов — компания потеряет миллионы. Такая же ситуация у интернет-магазинов, туроператоров, банков, стриминговых сервисов. Здесь показатели бизнеса напрямую связаны с работой инфраструктуры. 30 января на вебинаре эксперты MTC Web Services расскажут, как подготовиться к сезону, чтобы ваши системы не упали в период высоких нагрузок. Вы узнаете: 🔴К каким рискам в работе ИТ-систем нужно быть готовым во время высокого спроса 🔴Почему просто докупить серверы недостаточно 🔴Какие облачные сервисы помогают нашим клиентам выдерживать резкие всплески нагрузок Вебинар будет полезен: ✔️Ресурсам с резким всплеском трафика (сервисы по продаже билетов, новостные ленты, туроператоры и сервисы букинга, стриминговые сервисы, продажа образовательных курсов); ✔️Букмекерским конторам; ✔️E-commerce и онлайн-магазинам; ✔️Банковскому сектору. Регистрируйтесь и приходите на вебинар, задавайте вопросы спикерам — за лучший вопрос в комментариях будет подарок от команды!

Вот сделал ты все как написано тут и тут и тут, сгенерил ключи и подготовил сервера, но сука все равно что-то какая-то шляпа: Искал медь, обосрал медведь…
ssh user@server

Permission denied (publickey).
Что я делаю не так? Всё правильно, твой ssh клиент не знает, что ты пытаешься подключиться по ключам. Он идет на сервер по дефолту и ожидает что запросят пароль. А вход по паролям-то мы отключили!
Особенно ребята испытывают страдания при запуске ансибла. И начинают грешить именно на ансибл и плейбуки, а дело тут опять же в этих ключах. Ансибл ходит на сервера по ssh, соответственно это агент и ему тоже нужно знать про ssh ключи.
Не ссым, все уже придумали за нас. ➡️ Первый вариант:
ssh -i ~/.ssh/bashdays_rsa user@server
Через ключ -i указываем путь до своего ключа и со свистом залетаем на сервер. Теперь твой клиент знает — ага, эта бестолочь догадалась указать ключ, ну ок, прогнусь. Указывать каждый раз -i очень заёбисто, особенно если у тебя ssh ключей вагон и тележка, легко запутаться. Но тут тоже уже все придумано за нас. ➡️ Второй вариант: Захуячиваем ssh-agent
sudo apt-get update
sudo apt-get install openssh-client
Запускаем агент в фоне:
eval "$(ssh-agent -s)"
И добавляем в него нужные ключи:
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/bashdays_rsa
ssh-add ~/.ssh/ed25519
Смотрим что у нас торчит в агенте:
ssh-add -L
Ага, все ключи добавлены. Теперь не нужно указывать ключ -i, агент сам подкинет нужный ключ. Ну и ансибл сразу засвистит-запердит как надо. Прикол с агентом: Если на ssh ключе у тебя установлен пароль, то достаточно один раз его ввести и все последующие разы он у тебя не запрашивается. Не прикол с агентом: Как только ты закроешь консоль, агент уедет на кладбище со всеми ключами. Решение: Хуярим в ~/.profile (или чо там у тебя) такую конструкцию:
if [ -z "$SSH_AUTH_SOCK" ]; then
  eval $(ssh-agent -s) > ~/.ssh/ssh-agent
fi

ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/bashdays_rsa
ssh-add ~/.ssh/ed25519
Теперь при открытии консоли, у тебя будет автоматически запускаться ssh-agent и добавляться нужные ключи. Для zsh, в конфиге ~/.zshrc прописываем:
plugins=(git ssh-agent)

zstyle :omz:plugins:ssh-agent agent-forwarding on
zstyle :omz:plugins:ssh-agent identities id_rsa bashdays_rsa ed25519
zstyle :omz:plugins:ssh-agent lifetime
Включаем плагин ssh-agent и добавляем все нужные ключи. Теперь из коробки у тебя будет работать агент и в нем будут подгружены ключи. ➡️ Третий вариант: Через конфиг ~/.ssh/config, открываем этот файл у себя на машине и пишем:
Host bashdays.ru
  Hostname bashdays.ru
  IdentityFile /home/user/.ssh/bashdays_rsa
Теперь когда ты будешь подключаться по ssh к серверу bashdays.ru, то автоматически подставится указанный файл с ключами. Таким способом разруливают разные ключи для разных учеток в гитхабах/гитлабах. Например, так:
Host github.com
  Hostname github.com
  IdentityFile ~/.ssh/id_ed25519

Host github.com-bashdays
  Hostname github.com
  IdentityFile ~/.ssh/bashdays_rsa
➡️ Четвертый вариант: Сделать алиасы:
alias stage='ssh -i ~/.ssh/bashdays_rsa user@server'
alias prod='ssh -i ~/.ssh/id_ed25519 root@server'
И потом просто в консольке вбивать stage или prod, все автоматически подставится. 🅰️🅰️ Я использую все варианты, в зависимости от ситуации, но в предпочтениях у меня ssh-agent и алиасы. Да, в ансибле можно тоже прописать хардкодом ssh ключ, чтобы не использовать агентов и т.п. Через конфиг ansible.cfg:
[defaults]
private_key_file = ~/.ssh/bashdays_rsa
Через переменную окружения:
export ANSIBLE_PRIVATE_KEY_FILE=~/.ssh/bashdays_rsa
Есть еще 100500 способов как в ансибле это передать, я показал основные. Если хочешь узнать про все, велком в LF. Если знаешь еще какие-то варианты и приколюхи с ключами, камон в комменты, соберем в кучу полезняхи. С пятницей друзья! tags: #git #devops #ssh #linuxfactory — 🔔 @bashdays➡️ @gitgate

Что делать, если не хватает практики для работы с k8s? 👉 пойти учиться в Слёрм и освоить навыки работы с Kubernetes! За 6 не
Что делать, если не хватает практики для работы с k8s? 👉 пойти учиться в Слёрм и освоить навыки работы с Kubernetes! За 6 недель разберем: 🔸архитектуру k8s, основные понятия и компоненты 🔸создание, развертывание и масштабирование контейнеризированных приложений 🔸эксплуатацию кластеров k8s 🔸настройку мониторинга в кластере k8s
Видеокурс «Мониторинг в Grafana» в подарок до 31 января — для тех, кто хочет научиться работать со связкой Prometheus+Grafana, разбираться в работе системы и читать созданные графики. 🔥115 000 ₽ 80 000 ₽
Старт потока 10 февраля Подробности и программа курса — на сайте 👈 Реклама ООО «Слёрм» ИНН 3652901451

Немного съедем с темы и решим задачку с монтированием виндового раздела (BitLocker) в Linux. Если у тебя есть виндовый диск который запечатан битлокером, оказывается нифига не просто его подключить. При попытке монтирования получишь ошибку — анкновн файлсистем тайп БитЛохер. Всё решается с помощью утилиты dislocker.
sudo apt install dislocker
После установки создаем пару папок:
sudo mkdir -p /mnt/bitlocker
sudo mkdir -p /mnt/bitlockermount
Смотрим зашифрованные разделы fdisk -l ну или lsblk. Ну а дальше делаем финт ушами:
sudo dislocker <partition> -u<password> -- /mnt/bitlocker
Расшифровываем раздел, подставляем нужный partition и password. Partition берем тот что нашли через fdisk или lsblk. Что-то типа /dev/sdd1 /dev/sdc1. Монтируем:
sudo mount -o loop /mnt/bitlocker/dislocker-file /mnt/bitlockermount
Чтобы подключить раздел только для чтения, добавь в обе команды ключ -r. Рекомендую все же подключать с этим ключом. Если получил ошибку:
mount: /mnt/bitlockermount: wrong fs type, bad option, bad superblock on /dev/loop10, missing codepage or helper program, or other error.
То укажи явно тип файловой системы: Для ntfs:
sudo mount -t ntfs-3g -o loop /mnt/bitlocker/dislocker-file /media/bitlockermount
Для exFat:
sudo mount -t exFAT-fuse -o loop /mnt/bitlocker/dislocker-file /media/bitlockermount
Еще момент, вместо пароля можно использовать пароль восстановления, файла BEK или открытого ключа с помощью которого производилось шифрование. Для пароля восcтановления: -p<password> Для открытого ключа: -c Для BEK: -f <BEKFILE>
Заметь что после ключа -p нет пробела, это важно.
Ну вот и всё. Теперь ты умеешь подключить диски с BitLocker. А что бы такой диск подключался автоматически, камон в fstab:
<partition> /mnt/bitlocker fuse.dislocker user-password=<password>,nofail 0 0

/mnt/bitlocker/dislocker-file /media/bitlockermount auto nofail 0 0
Подставляем свои значения и радуемся. ➡️ Репа dislocker тут, можешь глянуть что там у нее под капотом. Кстати диски с битлокером отлично открываются в Fedora Silverblue из коробки (с помощью recovery password). По крайней мере в прошлом году точно открывались. Можешь ее на виртуалку поставить и развлекаться. tags: #linux #windows #utilites — 🔔 @bashdays➡️ @gitgate

В конце прошлого года «Лаборатория Касперского» запустили обучающую онлайн-платформу по ИБ, где собраны все доступные практич
В конце прошлого года «Лаборатория Касперского» запустили обучающую онлайн-платформу по ИБ, где собраны все доступные практические курсы от ведущих специалистов компании. В портфолио Kaspersky Cybersecurity Training представлены самые востребованные программы в постоянном онлайн-доступе! Можно пройти курсы и получить практические навыки кибербезопасности в удобном формате и комфортном для вас темпе. Чтобы больше узнать о доступных программах для онлайн-обучения, их наполнении и условиях обучения Kaspersky 30 января в 11.00 (МСК) проведет бесплатный вебинар с видеоуроками, презентациями и покажут целую облачную лабораторию, где можно отточить навыки на реальных образцах вредоносного кода и артефактах, с которыми специалисты сталкивались в расследованиях. Представят эксклюзивный курс по безопасной разработке ПО и разберут кому будут полезны курсы, и какие компетенции вы сможете освоить с помощью представленных программ. А если не сможете присутствовать на вебинаре 30 января? Не переживайте! Просто зарегистрируйтесь, и вам отправят запись после мероприятия!

Скинул мне как-то давненько NPC свой ssh ключ, чтобы я прописал его на сервере. Смотрю я на этот ключик и понять не могу — ты блядь через что это сделал?
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAAAAAwA...
И был он гораздо короче тех к которым я привык. Всего 256 бит. А привык я естественно к RSA. Хуйня! Чем короче тем уязвимее — подумал я и запросил нормальный, тот который ssh-rsa. Ну а потом спустя какое-то время проресерчив тему, узнал что ed25519 это всего лишь один из видов ключей которые можно пропихать в ~/.ssh/authorized_keys. И всё будет работать! Причем такой ключ гораздо надежнее чем легаси rsa. Короче не значит хуёвее. Распространенные типы ключей: rsa, ecdsa, ed25519, dsa (устаревший), может что-то еще существует, хуй знает, не интересовался.
ssh-rsa AAAAB3NzaC1yc2EAAAABIw...
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTI...
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICm8x...
ssh-dss AAAAB3NzaC1kc3MAAACBAPnsfNOnD...
Чтобы сгенерить такие ключи, нужно прописать их тип в параметр -t
ssh-keygen -t dsa -f ~/.ssh/bashdays_dsa
А дальше делаем всё как написано тут и тут и ходим на сервер по ключам. Почему «короче» не значит хуёвее? Давай сразу на примерах. Представь, что у тебя есть два лабиринта:
- В одном лабиринте (пики точеные) тебе нужно просто найти правильное число, которое делится на два других (RSA). - В другом лабиринте (хуи дроченые) тебе нужно найти точку на сложной кривой, которая соответствует определенному числу (ED25519).
Хотя лабиринт с простым числом (RSA) кажется меньше, его можно быстро решить с помощью методов, использующих факторизацию больших чисел. А вот лабиринт с эллиптической кривой (ED25519) будет гораздо более сложным для прохождения, даже если его размеры кажутся меньше, потому что для нахождения решения требуется гораздо больше вычислений. Хотя ED25519 ключ меньше по размеру (256 бит против 2048 бит в RSA), его решение гораздо сложнее из-за самой природы криптографии. 🅰️🅰️ Есть еще ключи в формате ppk, это те ключи которые можно сгенерить с помощью ебанутого PuTTYgen. Порой мне такие тоже скидывают, чтобы я их прописал. Но такие персонажи сразу идут — нахуй! Чтобы сконвертить такой ppk в нормальный ключ openssh, в самой морде PuTTYgen нужно сделать экспорт:
"Conversions" → "Export OpenSSH Key"
Либо через командную строку:
sudo apt update
sudo apt install putty-tools

puttygen bashdays.ppk -O private-openssh -o id_ed25519
ssh-keygen -y -f id_ed25519 > id_ed25519.pub
Устанавливаем нужный софт, конвертируем, высекаем публичный ключ. 🅰️🅰️ Для меня ed25519 всё равно чуждый, привык что-ли я к rsa, поэтому предпочитаю именно его. Ну а ты сразу привыкай к хорошему. ED25519 кстати нормально поддерживается в gitlab/github/gitea и отлично подходит для высоконагруженных систем и аутентификации. tags: #git #devops #linuxfactory — 🔔 @bashdays➡️ @gitgate

Проект масштабируется, и поддерживать его работоспособность становится сложнее? ✅ Значит, пора углубляться в создание, управл
Проект масштабируется, и поддерживать его работоспособность становится сложнее? ✅ Значит, пора углубляться в создание, управление и мониторинг работы кластеров! Все знания и практику можно получить на курсе «Kubernetes Мега» от учебного центра Слёрм.
Видеокурс «Мониторинг в Grafana» в подарок до 31 января — для тех, кто хочет научиться работать со связкой Prometheus+Grafana, разбираться в работе системы и читать созданные графики. 🔥 145 000 ₽ 110 000 ₽
Подробности и программа курса — на сайте 👈 За 7 недель вы научитесь: 🔸переносить продукт на платформу k8s 🔸разворачивать отказоустойчивые кластеры 🔸ускорять траблшуттинг 🔸повышать отказоустойчивость продукта 🔸разворачивать и обслуживать кластер с автоматической ротацией сертификатов, автодеплоем и правильным хранением секретов Еще раз ссылка на сайт 👈 Реклама ООО «Слёрм» ИНН 3652901451

На прохождение Cyber Shadow я потратил 20 часов и сдох 727 раз. Что сказать, моя жопа давно так не горела, со времен Ninja Gaiden на Денди. Но своеобразное удовольствие я всё же получил. Ладно, сегодня продолжаем серию постов #linuxfactory SSH ключи мы с тобой сделали, на сервере их прописали, надеюсь хорошо разжевал и ты проникся. Но это еще не всё, сервер не готов запускать тебя по ключам. Сейчас это исправим. Пиздуем на сервер под рутом, на тот самый куда ты закинул публичную часть ключа и открываем на редактирование файл /etc/ssh/sshd_config. Активируем эти строчки:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Потом делаем так:
ChallengeResponseAuthentication no
PasswordAuthentication no
PermitEmptyPasswords no
PermitRootLogin no
UsePAM no
Отключаем пароли, запрещаем вход под рутом, ну и так по мелочи. Мелочи расписал в комментах. Тут есть нюанс, при PermitRootLogin no ты иногда все равно сможешь зайти под рутом. Тут все дело в невинном файле который порой пихают из коробки.
/etc/ssh/sshd_config.d/50-cloud-init.conf
Этот файл содержит реврайт, в нем будет PermitRootLogin yes.
Так что, если ты отключил это в основном конфиге, проверь, а нет ли где-то еще реврайтов. На эти грабли очень часто наступают и тратят пол дня на дебаг.
После того как ты сделал все изменения, нужно выполнить:
sshd -t
systemctl reload sshd
Если первая команда отработала без ошибок, то запускаем reload. ➡️ Важно! Терминал в котором ты всё это настраиваешь — закрывать не стоит, сессия будет жить даже если накосячил. Сначала открой второй терминал и проверь что ты можешь снова войти на сервер по ключам или как минимум по паролю если сервер его запросил.
Бывают неприятные моменты, когда ты отключил вход по паролю и ssh ключи не завелись. Пизда рулю. Позже покажу как и это решать малой кровью.
В некоторых современных дистрибутивах, перезагрузка sshd поставлена на поток, ты меняешь конфиг и если с ним все ок, конфиг автоматически перечитывается службой. Носи это у себя в голове. Ну и еще про конфиги ssh, на сервере есть пару похожих конфигов, их часто путают и делают хуйню.
/etc/ssh/ssh_config
/etc/ssh/sshd_config
Первый это настройки поведения клиента. То есть если ты с этого сервера решишь куда-то подключиться по ssh, то применятся настройки из этого файла. А второй соответственно это серверные настройки. Твоя локальная машина это клиент, подключается к серверу, сервер берет настройки из /etc/ssh/sshd_config. Вот и всё. Если читал внимательно, у тебя в голове должен был сложиться правильный пазл. Ну и доступ по ключам тоже заработает. Тыкай, проверяй, задавай вопросы в комментах и пиши свои дополнения. Я человек пожилой, мог чего-то нахуевертить и упустить. Увидимся, это еще далеко не всё. tags: #git #devops #linuxfactory — 🔔 @bashdays➡️ @gitgate

Базы данных для задач любой сложности Безопасность, масштабируемость и отказоустойчивость баз данных — ключевые требования дл
Базы данных для задач любой сложности Безопасность, масштабируемость и отказоустойчивость баз данных — ключевые требования для любых современных веб-сервисов и приложений. А наличие этих требований по умолчанию, без дополнительной головной боли — мечта для любого бизнеса. Или не мечта, а реальность? Selectel предлагает одни из лучших облачных баз данных на рынке и берет эти на заботы на себя: ● предоставляет высокую производительность за счет оптимальной настройки ПО, подбора мощного железа и локальных NVMe-дисков; ● обеспечивает резервное копирование. Бесплатные бэкапы создаются автоматически, а восстановление данных происходит вплоть до секунды; ● гарантирует отказоустойчивость. Создать отказоустойчивый кластер можно всего от двух нод, что позволяет сэкономить до 33% стоимости ресурсов; ● дает возможности для быстрого масштабирования. При росте нагрузки можно поменять конфигурацию облачного сервера и количество реплик без простоя. ● заботится о безопасности: сервис соответствует российским и международным стандартам — закону 152-ФЗ (УЗ-1), приказу ФСТЭК № 21, PCI DSS, ISO 27001, 27017, 27018 и ГОСТ Р 57580. Развернуть готовые к работе кластеры облачных баз данных в несколько кликов: https://slc.tl/89548 Реклама, АО «Селектел», ИНН: 7810962785, ERID: 2VtzqxMCKuV

Такс, по гиту немного прошлись (но еще вернемся), теперь по ssh ключам. Для многих как оказалось тоже большая проблема. Но это база, поэтому нужно с этим научиться жить. Принять и простить.
Задача — хочу с локальной машины подключиться к серверу по ssh используя ключ.
Смысл тут такой: у тебя есть 2 ключа, один приватный, второй публичный. Приватный ключ ты хранишь как свою жопу и задом к лесу не поворачиваешься. Публичный ключ прописываешь на удаленных серверах, к которым тебе нужно подключиться.
В момент подключения к серверу публичная часть ключа «сравнивается» с приватной частью и если все хорошо, то включается зеленый свет.
А если всё хуева… то отправляемся дебажить, как эффектевно дебажить расскажу попозже. Давай тыкать. Генерим RSA ключ на своей машине. Про форматы ключей rsa/dsa напишу также отдельно, пока делаем rsa.
ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/bashdays_rsa
Эта команда сгенерит без лишних вопросов новый ключ и положит его в ~/.ssh/. Параметр -N указывает что на ключе не будет парольной фразы. Если по безопасности упарываешь, то можешь поставить пароль и ебстись с ним в будущем. Остальные параметры думаю для тебя очевидны. Тип ключа, битность, куда положить. Теперь у тебя в папке ~/.ssh/ два ключа bashdays и bashdays.pub. Соответственно первый это приватный (храним его как свою жопу), второй это публичный (шлюха ключ). Если попал в ситуацию, что публичный ключ проебался, можешь его сделать на основе приватного ключа, делается так:
ssh-keygen -y -f ~/.ssh/bashdays_rsa > ~/.ssh/bashdays.pub
Дело в шляпе. Тут самое главное не въебать приватный ключ. Ну а если въебал, сочувствую. А дальше… а дальше нужно публичную часть ключа прописать на сервер, к которому ты хочешь подключиться. Делается так:
ssh-copy-id -i ~/.ssh/bashdays.pub root@server
Если у тебя свежий сервак, то по умолчанию включен вход по паролю, на эту команду оно запросит пароль. Введи разок и ключик залетит на сервер. ➡️ Важно! Этой командой мы добавили на удаленный сервер ключ для пользователя root. То есть подключиться по ключам на сервер ты сможешь только под пользователем root. Если у тебя на удаленном сервере какой-то есть юзер, например: suchka, то и команда будет такой:
ssh-copy-id -i ~/.ssh/bashdays.pub suchka@server
Тут мы поменяли root на suchka. Теперь получается я могу используя приватный ключ bashdays_rsa, подключиться к удаленному серверу так:
ssh -i ~/.ssh/bashdays_rsa root@server
ssh -i ~/.ssh/bashdays_rsa suchka@server
То есть под рутом и под сучком. Аналогично добавляешь ключи для других юзеров. Вообще под рутом не рекомендую ключи какие-то прописывать, делай сразу для юзера и через sudoers наруливай ему права. Я обычно не пользуюсь ssh-copy-id, а сразу ручусь на сервер под паролем, руками создаю файл /home/user/.ssh/authorized_keys и в него просто копирую содержимое публичного ключа bashdays.pub. Но тут есть ряд нюансов. У файла authorized_keys должны быть права 600 или 644. Иначе на сервер не пустят. У меня всегда 600.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
А еще могут возникнуть проблемы с копипастой, не всегда удается скопировать ключик верно. Поэтому рекомендую сразу привыкать к хорошему и пользоваться ssh-copy-id. Ну и однострочник на баше для копирования ключа:
cat ~/.ssh/bashdays_rsa.pub | ssh username@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
Вечерком продолжим. Пока мотай на ус. tags: #git #devops #linuxfactory — 🔔 @bashdays➡️ @gitgate

🔹 Ищете надёжное оборудование для мониторинга серверных комнат? 👀🔍 ✅ Обратите внимание на устройства NetPing Компания с 20
🔹 Ищете надёжное оборудование для мониторинга серверных комнат? 👀🔍 ✅ Обратите внимание на устройства NetPing Компания с 2005 года разрабатывает и производит устройства для мониторинга и удаленного управления энергопитанием серверного оборудования. 🤝 Устройства NetPing будут полезны компаниям, которые используют IT-оборудование, инженерам и системным администраторам, сервисным компаниям и провайдерам, а также компаниям-интеграторам проектов IT-инфраструктуры. Почему стоит обратить внимание на устройства NetPing? ✅ Собственная разработка и высокотехнологичное производство, ✅ Простота настройки и использования, ✅ Высокая надежность на протяжении многих лет, ✅ Непрерывный мониторинг ключевых параметров серверного оборудования и удаленное управление энергопитанием, ✅ Универсальные и легко интегрируются с существующей инфраструктурой. 🌟 NetPing помогает IT-инфраструктуре работать стабильно и безопасно. 💪💻 #удаленноеуправление #серверныекомнаты #ITоборудование #системныеадминистраторы Реклама. ООО «Алентис Электроникс», ИНН: 7720310270, erid: 2VtzqwqVt7V

И снова здрасти, продолжаем больные темы. А еще ребят пиздец напрягает каждый раз делать:
git add .
git commit -m "ебальник убивальник"
git push
Если что-то напрягает, это что-то нужно оптимизировать. Тут всё как обычно банально. Делаем алиас и избавляемся от рутины. Умеешь алиасы делать? Ладно, раз тут разжевываем, покажу. Открываешь ~/.bashrc или чо там у тебя ~/.zshrc и пиздяришь:
alias gg="git add . && git commit -m \"$(date +'%d-%m-%Y %H:%M:%S')\" && git push"
Не забываем сделать source ~/.bashrc && ~/.zshrc. Теперь когда нужно что-то закомитить и отправить. Просто пишем «gg» и дело в шляпе. В описание коммита попадет текущая дата и время. В продуктовой команде тебе конечно пизды дадут за это, но если что-то пилишь для себя то вполне допустимо. Ну или если работаешь в VSCode или т.п. там плагины для гита есть, мышкой можешь в один клик отправлять все свои изменения в репу, без всяких алиасов. А можно еще прям в конфиге гита сделать алиас
[alias]
    cm = "commit -m"
либо командой:
git config --global alias.cm "commit -m"
Тогда команда для коммита будет такая:
git cm "initial commit"
Пример файла с нативными алиасами: тыкни на блок и он раскроется (это спойлер):
[alias] a = add aa = add . c = commit cm = commit -m s = status pl = pull pu = push df = diff b = branch bl = branch --all bd = branch --delete bD = branch -D bren = branch -m bdr = push origin --delete fa = fetch --all fp = fetch -p t = tag tf = fetch --tags tpu = push origin --tags tpuacq = push acquia --tags td = tag -d tpur = push origin --delete tpuacq = push acquia --delete co = checkout cob = checkout -b resh = reset --hard lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --graph clear = clean -f -d clearw = checkout -- .
Нихуя сложного, правда же? А вообще девопс должен знать всего две основных команды: git push и git pull Всё остальное лежит на плечах разработчиков. Пусть они ебуться с мерджами, конфликтами и т.п. У девопса другие задачи. Если уж нужно что-то смержить, смержить можно мышкой через морду или просто забить хуй. Вот так и живем! Пользуйся! tags: #git #devops #linuxfactory — 🔔 @bashdays➡️ @gitgate

🐧 Вы уже работаете с Linux, но хотите оперативно устранять сбои и решать нестандартные задачи при настройке серверов? 💪 Все
🐧 Вы уже работаете с Linux, но хотите оперативно устранять сбои и решать нестандартные задачи при настройке серверов? 💪 Все продвинутые навыки — от баш-скриптов и умения гибко рулить авторизацией до применения подхода Infrastructure as code — ждут вас на онлайн-курсе «Administrator Linux. Professional» от OTUS. Пройдите тестирование, чтобы: - оценить свои навыки; - занять место на курсе по специальной цене; - получить доступ к бесплатным урокам курса (доступны сайте курса). 👉 Полное тестирование: https://vk.cc/cHrfeH Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Еще один частый затык с гитом — у тебя создана чистая репа в гитлабе и локально на машине лежит уже наработанный проект. Но проект еще не под гитом. Как заебенить проект в репу в гитлабе? Первый вариант Самый беспроигрышный и лёгкий вариант — это склонировать себе эту чистую репу в какую-нибудь папку и затем просто перетащит в эту папку все файлы из твоего проекта. Приватные репы клонируй через git@, а публичные можешь и через https. Если попробуешь склонировать приватную репу через https, оно запросит у тебя логин и пароль от учетки гитлаба/гитхаба. Но такие вещи обычно делают на ssh ключах, без хуйни и паролей.
git clone git@gitlab.com:linuxfactory/infra.git
Есть еще хороший хак, если в к конце этой команды добавить символ точки «.» через пробел, то репка склонируется в текущую папку (не будет создана папка infra) НО при условии что папка на локальной машине у тебя пустая, иначе получишь по ебалу ошибку. Ну а дальше по классике:
git add .
git commit -m "initial commit"
git push
Не забываем что однажды получишь сообщение: Author identity unknown, про этот случай я рассказывал вчера. Всё. Никаких ебучих конфликтов, тонны комманд и т.п. все прозрачно и просто. На первых этапах прям рекомендую использовать этот способ. Меньше говна хлебнешь. Второй вариант
cd /path/to/project
git init
git add .
git commit -m "initial commit"
git remote add origin https://gitlab.com/username/reponame.git
git push -u origin master
Как видишь тут уже дерьма побольше, сложновато запомнить неокрепшему уму. К тому же можешь словить ряд ошибок:
fatal: repository not found remote: HTTP Basic: Access denied remote origin already exists Updates were rejected because the tip of your current branch is behind error: failed to push some refs
Придется гуглить, делать rebase или вообще конфликты решать. А решать конфликты это то еще удовольствие. Теперь даже если что-то локально нахуевертил в гите, просто ёбни папку .git в проекте. Сделай все по первому способу и всё починится. Это намного быстрее чем разгребать и дебажить неочевидные ошибки. tags: #git #devops #linuxfactory — 🔔 @bashdays➡️ @gitgate

Helm в Kubernetes: Продвинутая шаблонизация манифестов ⚡️бесплатный вебинар от учебного центра Слёрм! 🔴Рассмотрим создание р
Helm в Kubernetes: Продвинутая шаблонизация манифестов ⚡️бесплатный вебинар от учебного центра Слёрм! 🔴Рассмотрим создание ресурсов в Kubernetes с помощью YAML-файлов 🔴Обсудим шаблонизаторы ресурсов: Kustomize, Helm, CUE и Jsonnet 🔴Разберемся с терминологией Helm и основными командами 🔴Изучим внутреннее устройство одного helm-чарта 🔴Научимся искать и работать с готовыми helm-чартами с Artifact HUB Спикер: Руслан Гайнанов, Тимлид DevOps-команды проекта «Осмакс» в ИТ-Холдинге Т1 Ведущий: Виталий Лихачев, SRE в крупном голландском тревелтехе Когда: 29 января в 19:00 Занять место на вебинаре — через бота 👈 Реклама ООО «Слёрм» ИНН 3652901451

Как я понял много кто за гит не шарит, опять же судя по ОЧЕНЬ частым вопросам в LF. Хотя очевидные вещи для одного, не всегда очевидны для другого. Поэтому давай закрывать эти боли. Будет несколько серий постов, банально, но полезно. Пройдем максимально просто и быстро. Если чо непонятно пиши в комменты, будем разбираться. Думал в рамках закрытого интенсива сделать, но пусть будет бесплатно. Ну и первая проблема:
Author identity unknown

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: empty ident name (for <user@dev.>) not allowed
Не устану повторять — читай то, что тебе пишут! Эта штука появляется в момент команды git commit. В ошибке говорится — я хуй знает кто ты такой, давай уже определись и тогда все заработает. То есть гит не знает от чьего имени оправлять коммит в репозиторий. Как решать? Ну оно тебе явно уже написало какие команды нужно забить. А забить надо пару строк:
  git config --global user.email "hello@devopsina.ru"
  git config --global user.name "Roman Shubin"
Всё, теперь коммит подпишется и ошибка уйдет. Глобальные настройки обычно лежат в файле ~/.gitconfig Ну дак оно же глобально прописалось для всех реп?? Конечно, но это можно изменять в конфиге самой репы. То есть допустим у меня есть 2 репы:
1. BashDays 2. LinuxFactory
В первом случае я хочу подписывать и отправлять коммиты как Roman Shubin, а во втором как Harbor Whore. Сейчас на глобальном уровне в обоих случаях будет Roman Shubin. Чтобы это пофиксить. Открываем нужную нам гит репу на своей машине, пиздуем в папку .git и открываем на редактирование файл config. Ну и в него добавляем секцию user.
[user]
    name = Roman Shubin
    email = hello@devopsina.ru
Соответственно для второй репы делаем тоже самое, только меняем мыло и имя на нужное тебе. Если руками в падлу писать, выполняем команды:
git config user.email "hello@devopsina.ru"
git config user.name "Roman Shubin"
Тут отсутствует ключик --global. Ну и чтобы посмотреть кем подпишется коммит, есть команда:
git config --list --show-origin
Находясь в папке с репой, она выведет всю необходимую информацию. Порой очень полезно предварительно проверить, перед пушем в репу. Ну и скучная, но важная теория:
- Если вы используете GitHub, GitLab или другую платформу, и хотите, чтобы ваши коммиты были связаны с вашим аккаунтом, то email, указанный в Git, должен совпадать с email, привязанным к вашему аккаунту на этой платформе. Это нужно для того, чтобы платформа могла корректно отображать ваши коммиты в вашем профиле. - Если email не совпадает, коммиты все равно будут отправлены, но они не будут автоматически связаны с вашим аккаунтом на платформе.
Такие дела. Видишь, не все так сложно как ты думаешь. Завтра рассмотрим еще очень важные вещи, от которых жопа обычно горит на начальных этапах. tags: #git #devops #linuxfactory — 🔔 @bashdays➡️ @gitgate

Открытый урок «Хранение данных в Kubernetes: Volumes, Storages, Stateful-приложения» ⏺️ 30 января в 20:00 МСК Бесплатно. Урок
Открытый урок «Хранение данных в Kubernetes: Volumes, Storages, Stateful-приложения» ⏺️ 30 января в 20:00 МСК Бесплатно. Урок в рамках старта курса «Инфраструктурная платформа на основе Kubernetes» от Otus. На вебинаре: ✔️Разберем, что такое тома и постоянные тома в Kubernetes, и как они помогают организовать хранение данных; ✔️ определение между типами хранилищ: от локального до облачного и распределенного; ✔️ увидим, как эффективно работать с StatefulSet и управлять stateful-приложениями в Kubernetes; ✔️ лучшие практики настройки и использования Persistent Volume Claims (PVC), классов хранения и других инструментов. Вебинар будет полезен: DevOps-инженерам и разработчикам, системным администраторам, разработчикам Backend и FullStack, работающим с приложениями, требующими надежного хранения данных и сохранения состояния. 🚀 Ссылка на регистрацию: https://vk.cc/cHuhd3 Участники вебинара получат гарантированную скидку на курс. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Как правильно хранить тяжелые файлы гит репах? Например, бинарники или что-то подобное. Ответ очевидный и правильный — никак! В гитлабах/гитхаба/битбакетах установлены лимиты на размер отдельных файлов. Там что-то вроде 50 метров на файл дается. В принципе можно уложиться. Но нахуй надо. Прикинь у тебя пайплайн вытягивает репу размером с 10 гигабайт. И так каждую сборку. Гит репа должна быть тощей и дрищёвой. А всё тяжелое будь бобр-добр храни в s3 либо на других решениях. НО если очень хочется прям в гите держать. Для этого существует GIT LFS. Дословно — Large File Storage (дохуя большое файловой хранилище). У LFS уже свои лимиты в отличие от нативного git репозитория. И это LFS включен из коробки в гитлабах/гитхаба/битбакетах. Там уже размер файла может быть 1 гигабайт или что-то вроде того. В gitea тоже можно LFS через конфиг включить:
[server]  
LFS_START_SERVER = true  
LFS_ALLOW_PURE_SSH = true
  
[lfs]   
PATH = /home/gitea/data/lfs
Как этим пользоваться? Ставим к себе на машину:
apt-get install git-lfs
brew install git-lfs
Переходим в свой гит репозиторий и инициализируем:
cd /home/user/linuxfactory/infra
git lfs install
В папке /infra/roles/node_exporter/files у меня лежит бинарник node_exporter который весит 100 мегабайт На самом деле я хуй знает сколько он весит, это для примера. Помечаем его:
cd /infra/roles/node_exporter/files
git lfs track "node_exporter"
После этого в папке files появится файл .gitattributes. Это правила для этого файла, которые указывают чтобы node_exporter улетал в LFS. Внутри этот файл выглядит так:
node_exporter filter=lfs diff=lfs merge=lfs -text
И по итогу бинарник в репе станет ссылкой на настоящий бинарник в LFS. А еще можно вайлдкардами трекать:
git lfs track "*.jpg"
Ну а дальше, как обычно:
git add .
git commit -m "add lfs for node_exporter"
git push
Всё! Теперь твой большой файл аккуратно лежит в LFS, а в самом гит репозитории осталась лишь ссылка которая на этот файл ссылается. Мне тут пришлось партнерских постов на эту неделю понабрать, реинвестируем в развитие @gitgate, так что рекомендую включить баннерную слепоту и сильно не триггериться. Спасибо за понимание! Чтиво: про LFS можешь глянуть еще тут и тут. tags: #git #devops — 🔔 @bashdays➡️ @gitgate

❗️ Внимание! Открытый урок «Клиентская оптимизация веб-приложения» 23 января, 19:00 мск. 😱 Тесты скорости кричат: «слишком м
❗️ Внимание! Открытый урок «Клиентская оптимизация веб-приложения» 23 января, 19:00 мск. 😱 Тесты скорости кричат: «слишком медленно»? Клиенты не хотят ждать? Узнайте, как ускорить приложение с минимальными усилиями, но максимальным результатом. На вебинаре: - разберём методы клиентской и серверной оптимизации; - проанализируем скорость и научимся её тестировать; - обсудим решения, которые внедряются за пару часов. ⭐️Спикер Николай Лавлинский — опытный разработчик, руководитель и преподаватель, кандидат экономических наук. 🚀 Участники урока получат скидку на большое обучение «Инфраструктура высоконагруженных систем». 👉 Регистрация для участия: https://vk.cc/cHrf5b Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Пишу очередной урок для LF и понадобилось мне нагенерить мусорного трафика в прометеус. Чтобы ребятам показать визуально как это будет выглядеть в графане. Тестировщикам (QA) кстати тоже эта хуйня отлично зайдет, хайлоад там устроить. Для таких дел я обычно использую 2 утилиты.
1. Bombardier 2. Stress
Первая (Bombardier) отлично подходит для генерации паразитного http трафика.
bombardier -c 125 -n 10000000 http://localhost:8080
Вторая (Stress) можно нагрузить ядра процессора и позырить чо будет. Ну или над жестким диском надругаться или памятью.
stress --cpu 4
stress --hdd 100
stress --cpu 4 --vm 2 --io 1 --timeout 20
Ну а чтобы протестировать no space left on device просто генерим большой файлик удобным тебе способом. Установка элементарная:
apt install bombardier stress
Эти утилиты отлично подходят для тестирования разнообразных алертилок, к примеру alertmanager. Нагнал синтетических данных, получил соплю в графане, алертилка тригернулась и накричала в чатик. Отладил, задеплоил. Красота и удобно! Для этих дел есть еще всякие wrk, ab, hey и т.п. но с ними как-то у меня не сложилось. Такие дела, бери на вооружение, мож сгодится в хозяйстве. tags: #utilites #highload #qa — 🔔 @bashdays➡️ @gitgate