В этом посте собраны основные команды SSH для безопасной работы с удалёнными серверами. Рассмотрены подключение к серверу, генерация и установка SSH-ключей, выбор приватного ключа, подключение через нестандартный порт, создание локальных SSH-туннелей и работа через Jump Host. Полезно для администрирования серверов, безопасного доступа и работы с закрытой инфраструктурой.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍8🤝5❤1
🎓 Как гарантированно войти в сферу кибербезопасности с официальным дипломом?
Самостоятельное обучение в ИБ - это месяцы хаоса и разрозненных роликов с YouTube. Покупка курсов по отдельности на популярных платформах легко переваливает за 300 000 ₽.
🔥CyberYozh Academy собрали цельный карьерный трек в один пак: 5 фундаментальных программ + официальный Диплом системного администратора за 50 000 ₽ (вместо ~250 000 ₽)
Что входит в программу:
▪️ Linux CyberPunk - системное администрирование с выдачей диплома, открывающего двери в корпоративный сектор.
▪️ SQL для хакера - глубокое понимание архитектуры баз данных и векторов атак.
▪️ HackerPoint - продвинутый уровень пентеста и анализа уязвимостей.
▪️ HackerPoint (Blue vs Red Team) - база сетевой безопасности, защиты и атак.
▪️ AI-помощники на Python - автоматизация рутины безопасника при помощи нейросетей.
Вы получаете законченную квалификацию: от администрирования защищенных облачных решений до проведения тестов на проникновение.
⚠️ Обратите внимание: Из-за персональной проверки заданий и официального оформления дипломов на каждый поток действует жесткий лимит - не более 15 мест.
🦔 Отправь промокод
👉@cyacademy_support
Самостоятельное обучение в ИБ - это месяцы хаоса и разрозненных роликов с YouTube. Покупка курсов по отдельности на популярных платформах легко переваливает за 300 000 ₽.
🔥CyberYozh Academy собрали цельный карьерный трек в один пак: 5 фундаментальных программ + официальный Диплом системного администратора за 50 000 ₽
Что входит в программу:
▪️ Linux CyberPunk - системное администрирование с выдачей диплома, открывающего двери в корпоративный сектор.
▪️ SQL для хакера - глубокое понимание архитектуры баз данных и векторов атак.
▪️ HackerPoint - продвинутый уровень пентеста и анализа уязвимостей.
▪️ HackerPoint (Blue vs Red Team) - база сетевой безопасности, защиты и атак.
▪️ AI-помощники на Python - автоматизация рутины безопасника при помощи нейросетей.
Вы получаете законченную квалификацию: от администрирования защищенных облачных решений до проведения тестов на проникновение.
⚠️ Обратите внимание: Из-за персональной проверки заданий и официального оформления дипломов на каждый поток действует жесткий лимит - не более 15 мест.
LinuxReady в чат с менеджером, чтобы закрепить за собой скидку и узнать подробности: 👉@cyacademy_support
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
В Linux можно копировать собранные файлы так, чтобы не менять файл назначения, если новая версия фактически такая же!
Для этого у
Перед установкой
Это принципиально отличается от обычного копирования поверх файла:
Даже если результат сборки идентичен предыдущему, лишняя перезапись может изменить метаданные файла и запустить всё, что следит за его изменением.
С
Причём
🔥
🚪 Linux Ready | #совет
Для этого у
GNU install есть опция -C (--compare):install -C -m 0755 ./build/myapp ./bin/myapp
Перед установкой
install сравнит исходный и существующий файлы. Если содержимое и заданные атрибуты совпадают, файл назначения вообще не будет изменён.Это принципиально отличается от обычного копирования поверх файла:
cp ./build/myapp ./bin/myapp
Даже если результат сборки идентичен предыдущему, лишняя перезапись может изменить метаданные файла и запустить всё, что следит за его изменением.
С
install -C это удобно убрать прямо из Makefile или скрипта локального развёртывания:install -C -m 0755 build/myapp /usr/local/bin/myapp
Причём
install одновременно умеет выставлять права, поэтому отдельный chmod после копирования не требуется:install -C -m 0644 config.ini /etc/myapp/config.ini
install -C полезен там, где одна и та же сборка устанавливается много раз: неизменившийся файл остаётся нетронутым, а копирование и выставление прав сводятся к одной команде.Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤7🤝4🔥2
Например,
sed 's/old/new/g' file.txt заменяет все вхождения old на new, а sed -n '2p' file.txt выводит только вторую строку.На картинке — основные команды, опции и флаги
sed, а также готовые примеры для замены текста, удаления строк и редактирования файлов.Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥6🤝3❤1
Как оплачивать зарубежные сервисы в 2026 году?
Можно бегать между посредниками и бояться блокировок после оплаты, а можно выпустить международную карту Lumio Pay и пользоваться любимыми сервисами без рисков.
— выпуск карты за 2 минуты
— лучший курс пополнения на рынке (у конкурентов на 20% выше)
— пополнение рублями или криптой
— чистые BIN карт, оплата без риска блокировок
Пока все ищут идеальное решение, оно у тебя перед глазами: @LumioPay
Можно бегать между посредниками и бояться блокировок после оплаты, а можно выпустить международную карту Lumio Pay и пользоваться любимыми сервисами без рисков.
— выпуск карты за 2 минуты
— лучший курс пополнения на рынке (у конкурентов на 20% выше)
— пополнение рублями или криптой
— чистые BIN карт, оплата без риска блокировок
Пока все ищут идеальное решение, оно у тебя перед глазами: @LumioPay
Для отладки изолированного процесса необязательно заходить внутрь контейнера или менять его образ!
Linux хранит
Например, если сервис видит другую сеть, чем хост:
То же самое можно сделать с файловыми монтированиями:
А если для диагностики нужны сразу несколько namespaces:
Так можно получить
При этом
🔥
🚪 Linux Ready | #совет
Linux хранит
namespaces процесса в /proc/<PID>/ns/, а nsenter позволяет выполнить команду внутри выбранного namespace уже работающего процесса.Например, если сервис видит другую сеть, чем хост:
sudo nsenter -t 1842 -n ss -lntp
-t 1842 выбирает процесс, а -n подключает команду к его network namespace. В результате ss работает с тем же сетевым стеком, таблицами маршрутизации и интерфейсами, которые доступны целевому процессу.То же самое можно сделать с файловыми монтированиями:
sudo nsenter -t 1842 -m findmnt
А если для диагностики нужны сразу несколько namespaces:
sudo nsenter -t 1842 -m -n -p sh
Так можно получить
shell с mount, network и PID namespace нужного процесса и запускать внутри обычные ip, ss, findmnt, ps и другие диагностические инструменты.При этом
nsenter не создаёт новый namespace — он присоединяет запускаемую команду к уже существующему.nsenter особенно полезен, когда процесс изолирован namespaces, а внутри его окружения нет диагностических утилит: вместо установки инструментов туда можно зайти в нужный namespace с хоста и исследовать проблему на месте.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍7❤4🤝2
Большой файл можно клонировать почти мгновенно без полного копирования его данных!
На файловой системе с поддержкой
Новый файл получает собственное имя и метаданные, но первоначально разделяет
Когда один из файлов изменяется, файловая система копирует только затронутые блоки:
Исходный файл при этом не изменится.
Режим
Для автоматического перехода к обычному копированию используется:
Такой клон подходит для крупных артефактов сборки, наборов данных и временных рабочих копий. Он не заменяет резервное копирование и не гарантирует согласованность файлов работающих баз данных или виртуальных машин.
🔥 Используйте
🚪 Linux Ready | #совет
На файловой системе с поддержкой
reflink выполните:cp --reflink=always build.tar.zst test-build.tar.zst
Новый файл получает собственное имя и метаданные, но первоначально разделяет
extents исходного файла.Когда один из файлов изменяется, файловая система копирует только затронутые блоки:
printf 'test' >> test-build.tar.zst
Исходный файл при этом не изменится.
Режим
--reflink=always удобен для проверки: если источник и назначение находятся на разных файловых системах либо reflink не поддерживается, cp завершится ошибкой вместо незаметного полного копирования.Для автоматического перехода к обычному копированию используется:
cp --reflink=auto build.tar.zst test-build.tar.zst
Такой клон подходит для крупных артефактов сборки, наборов данных и временных рабочих копий. Он не заменяет резервное копирование и не гарантирует согласованность файлов работающих баз данных или виртуальных машин.
reflink, когда нужен быстрый независимый клон большого неизменяемого файла внутри одной поддерживаемой файловой системы.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍7❤2🤝1
Удобный бот для мониторинга доступности сайтов и серверов
Никаких сторонних сайтов и приложений. Уведомления и интерфейс в Telegram.
Проверки: HTTP/HTTPS, PORT, PING, Истечение SSL, Истечение домена.
Из приятностей:
- Возможность добавить бота в рабочие группы для коллективного получения информации о доступности ресурсов.
- Возможность поделиться ботом с клиентами, коллегами и сотрудниками.
Сам бот: @UptimeScanBot
Более подробное описание на сайте: uptimescan.bot
Никаких сторонних сайтов и приложений. Уведомления и интерфейс в Telegram.
Проверки: HTTP/HTTPS, PORT, PING, Истечение SSL, Истечение домена.
Из приятностей:
- Возможность добавить бота в рабочие группы для коллективного получения информации о доступности ресурсов.
- Возможность поделиться ботом с клиентами, коллегами и сотрудниками.
Сам бот: @UptimeScanBot
Более подробное описание на сайте: uptimescan.bot
👍3❤1🔥1
В GNU/Linux есть отдельная утилита для преобразования чисел внутри текстовых потоков!
Допустим, команда или скрипт отдаёт размер в байтах:
Вместо того чтобы подключать
Причём преобразование работает и в обратную сторону — привычные размеры можно превратить в обычные числа:
Это удобно в shell-скриптах: на вход можно принимать понятные человеку 500Mi или 4Gi, а внутри работать уже с количеством байтов.
🔥
🚪 Linux Ready | #совет
Допустим, команда или скрипт отдаёт размер в байтах:
du -B1 /var/log/* | head
Вместо того чтобы подключать
awk и вручную делить значения на 1024, вывод можно сразу пропустить через numfmt:du -B1 /var/log/* | numfmt --field=1 --to=iec-i
--field=1 преобразует только первое поле каждой строки. Всё остальное остаётся на месте, поэтому numfmt удобно вставлять прямо в уже существующие пайпы.Причём преобразование работает и в обратную сторону — привычные размеры можно превратить в обычные числа:
printf '%s\n' 512Mi 2Gi |
numfmt --from=iec-i
Это удобно в shell-скриптах: на вход можно принимать понятные человеку 500Mi или 4Gi, а внутри работать уже с количеством байтов.
bytes=$(numfmt --from=iec-i <<< "4Gi")
echo "$bytes"
numfmt позволяет выкинуть из shell-скриптов самодельные конвертеры размеров: он понимает единицы, умеет работать с отдельными полями и встраивается в обычные Linux-пайпы.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍9❤5
Например,
SRE фокусируется на надёжности и эксплуатации систем, а Platform Engineering — на создании общей платформы и инструментов для продуктовых команд.На картинке — наглядное сравнение
DevOps, SRE и Platform Engineering: от разработки, тестирования и релизов до деплоя, мониторинга и эксплуатации инфраструктуры.Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍6🤝3❤1
На Stepik запустили мощный курс по «Troubleshooting Docker и Kubernetes: поиск и устранение проблем»
В программе только важные аспекты:
— troubleshooting Docker и образов
— диагностика сетевых проблем
— настройка readiness/liveness probes
— отладка pod’ов, деплоев и ingress
— анализ логов контейнеров и кластера
— разбор ошибок CrashLoopBackOff, OOMKilled, ImagePullBackOff и других
Собеседования на DevOps/SRE сейчас всё чаще строятся вокруг реальных инцидентов. Данный курс фокусируется именно на таких сценариях и помогает в подготовке к практическим вопросам
48 часов доступен со скидкой 25%
↗️ Пройти курс на Stepik
В программе только важные аспекты:
— troubleshooting Docker и образов
— диагностика сетевых проблем
— настройка readiness/liveness probes
— отладка pod’ов, деплоев и ingress
— анализ логов контейнеров и кластера
— разбор ошибок CrashLoopBackOff, OOMKilled, ImagePullBackOff и других
Собеседования на DevOps/SRE сейчас всё чаще строятся вокруг реальных инцидентов. Данный курс фокусируется именно на таких сценариях и помогает в подготовке к практическим вопросам
48 часов доступен со скидкой 25%
Please open Telegram to view this post
VIEW IN TELEGRAM
👎3
Подключаемся к закрытым серверам через SSH ProxyJump!
В инфраструктуре серверы часто не имеют публичного IP-адреса и доступны только из внутренней сети. При этом отдельный сервер может быть доступен извне и использоваться как промежуточный SSH-узел — bastion или jump host.
Например, bastion доступен по адресу
Если bastion имеет доступ к
(адреса в примерах документационные — при повторении замените их на свои)
SSH сначала подключится к
Если SSH на bastion работает на нестандартном порту, его можно указать прямо в параметре
Для постоянной работы удобнее описать оба сервера в
После этого подключение к внутреннему серверу выполняется обычной командой:
Через тот же маршрут можно использовать
Или
Если до целевого сервера нужно пройти через несколько промежуточных узлов, их можно перечислить через запятую:
То же самое можно записать в конфигурации:
Для bastion и внутреннего сервера можно использовать разные SSH-ключи:
Приватный ключ от внутреннего сервера при этом не требуется копировать на bastion. Аутентификацию на конечном сервере выполняет локальный SSH-клиент.
Посмотреть итоговую конфигурацию, которую SSH применит для подключения, можно через:
Например, отдельно вывести основные параметры:
Если соединение не устанавливается, запускаем SSH с диагностическим выводом:
Для более подробной диагностики:
Так можно увидеть установление соединения через промежуточный узел, выбор ключей, проверку host key и этапы аутентификации.
После этого локально подключаемся к базе через порт
SSH-соединение пройдёт через bastion до внутреннего сервера, а перенаправление на
🔥
🚪 Linux Ready | #практика
В инфраструктуре серверы часто не имеют публичного IP-адреса и доступны только из внутренней сети. При этом отдельный сервер может быть доступен извне и использоваться как промежуточный SSH-узел — bastion или jump host.
Например, bastion доступен по адресу
203.0.113.10, а внутренний сервер имеет адрес 10.0.0.20. Напрямую подключиться к внутреннему серверу из внешней сети нельзя:ssh admin@10.0.0.20
Если bastion имеет доступ к
10.0.0.20:22, используем ProxyJump:ssh -J user@203.0.113.10 admin@10.0.0.20
(адреса в примерах документационные — при повторении замените их на свои)
SSH сначала подключится к
203.0.113.10, а соединение с SSH-сервером на 10.0.0.20 будет установлено через этот промежуточный узел.Если SSH на bastion работает на нестандартном порту, его можно указать прямо в параметре
-J:ssh -J user@203.0.113.10:2222 admin@10.0.0.20
Для постоянной работы удобнее описать оба сервера в
~/.ssh/config:Host bastion
HostName 203.0.113.10
User user
Host internal
HostName 10.0.0.20
User admin
ProxyJump bastion
После этого подключение к внутреннему серверу выполняется обычной командой:
ssh internal
Через тот же маршрут можно использовать
scp:scp backup.tar.gz internal:/tmp/
Или
sftp:sftp internal
Если до целевого сервера нужно пройти через несколько промежуточных узлов, их можно перечислить через запятую:
ssh -J user@gateway1,user@gateway2 admin@internal
То же самое можно записать в конфигурации:
Host internal
HostName 10.0.0.20
User admin
ProxyJump gateway1,gateway2
Для bastion и внутреннего сервера можно использовать разные SSH-ключи:
Host bastion
HostName 203.0.113.10
User jump
IdentityFile ~/.ssh/bastion_ed25519
Host internal
HostName 10.0.0.20
User admin
IdentityFile ~/.ssh/internal_ed25519
ProxyJump bastion
Приватный ключ от внутреннего сервера при этом не требуется копировать на bastion. Аутентификацию на конечном сервере выполняет локальный SSH-клиент.
Посмотреть итоговую конфигурацию, которую SSH применит для подключения, можно через:
ssh -G internal
Например, отдельно вывести основные параметры:
ssh -G internal | grep -Ei 'hostname|user|proxyjump|identityfile'
Если соединение не устанавливается, запускаем SSH с диагностическим выводом:
ssh -v internal
Для более подробной диагностики:
ssh -vvv internal
Так можно увидеть установление соединения через промежуточный узел, выбор ключей, проверку host key и этапы аутентификации.
ProxyJump можно использовать вместе с обычным port forwarding. Например, PostgreSQL работает на внутреннем сервере и слушает только локальный порт 5432:ssh -N -J user@203.0.113.10 \
-L 5433:127.0.0.1:5432 \
admin@10.0.0.20
После этого локально подключаемся к базе через порт
5433:psql -h 127.0.0.1 -p 5433 database
SSH-соединение пройдёт через bastion до внутреннего сервера, а перенаправление на
127.0.0.1:5432 будет выполнено уже со стороны конечного SSH-сервера.ProxyJump позволяет подключаться к серверам во внутренних сетях через bastion без ручного создания промежуточных SSH-сессий. Настройку можно вынести в ~/.ssh/config и использовать тот же маршрут для ssh, scp, sftp и SSH-туннелей.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤5👍5