psj-notes
~/home ~/series ~/archive

02. SSH-ключи, sudo и zsh

12.07.2026 Серия: Настройка VDS сервера с VPN "ssh" "zsh" "sudo" "безопасность"

Зачем SSH-ключи

Парольная аутентификация — слабое место любой системы. Пароль можно подобрать (bruteforce), перехватить или подсмотреть. SSH-ключи используют асимметричное шифрование: закрытый ключ хранится только у вас, открытый — на сервере. Даже если злоумышленник получит доступ к серверу, без вашего закрытого ключа он ничего не сможет сделать.

Генерация ключа на локальной машине

Современный стандарт — Ed25519. Он быстрее и безопаснее RSA, а ключ занимает всего 64 байта:

ssh-keygen -t ed25519 -C "sergey@home-pc"

Флаг -C — комментарий, чтобы вы не путали ключи между машинами.

Система спросит:

Enter file in which to save the key (/home/sergey/.ssh/id_ed25519):

Можно оставить по умолчанию — просто Enter.

Enter passphrase (empty for no passphrase):

Пароль на ключ — настоятельно рекомендуется. Если кто-то получит ваш закрытый ключ, он всё равно не сможет им воспользоваться без пароля. Используйте менеджер паролей, чтобы не забыть.

Копирование ключа на сервер

Самый простой способ — утилита ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_ed25519.pub sergey@95.216.42.187

Она сама добавит ваш открытый ключ в файл ~/.ssh/authorized_keys на сервере.

Если ssh-copy-id недоступна (Windows), сделайте руками:

cat ~/.ssh/id_ed25519.pub | ssh sergey@95.216.42.187 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

Проверяем:

ssh sergey@95.216.42.187

Если подключились без запроса пароля — ключ работает.

Отключение парольного входа в SSH

Теперь, когда ключ добавлен, парольный доступ можно и нужно отключить. Редактируем конфиг SSH на сервере:

sudo nano /etc/ssh/sshd_config

Находим и меняем следующие параметры:

PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes

Объяснение параметров:

Параметр Значение Зачем
PasswordAuthentication no Запрещает вход по паролю Только ключи
PermitRootLogin prohibit-password Root может зайти только по ключу Безопасность
PubkeyAuthentication yes Включает аутентификацию ключами Должно быть включено

Перезагружаем SSH:

sudo systemctl restart sshd

Важно: не закрывайте текущую сессию, пока не проверите новую в соседнем терминале. Если что-то пошло не так, старая сессия останется открытой.

NOPASSWD sudo

Постоянно вводить пароль для sudo — утомительно. Добавим возможность выполнять sudo без пароля:

sudo visudo -f /etc/sudoers.d/nopasswd

Добавьте строку:

sergey ALL=(ALL) NOPASSWD: ALL

Теперь можно писать sudo <команда> без лишних вопросов.

Установка zsh и oh-my-zsh

Оболочка bash хороша, но zsh с плагинами — это совсем другой уровень удобства.

# Установка zsh
sudo apt update && sudo apt install -y zsh

# Смена оболочки по умолчанию
chsh -s $(which zsh)

Выйдите из сессии и зайдите заново — теперь будет zsh. При первом запуске появится меню настройки — выберите (2) Попробовать заполнить конфиг по умолчанию.

Теперь установим oh-my-zsh:

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Тема powerlevel10k

У oh-my-zsh есть куча тем, но лучшая на сегодня — powerlevel10k:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
  ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

Включаем тему в ~/.zshrc:

sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="powerlevel10k\/powerlevel10k"/' ~/.zshrc

Выходим и заходим снова — запустится интерактивный мастер настройки темы. Если мастер не появился, выполните:

p10k configure

Мастер задаст несколько вопросов про иконки, стиль и цветовую схему. Можно выбрать всё по умолчанию — потом перестроить одной командой.

Полезные плагины oh-my-zsh

Добавим пару плагинов для повседневной работы:

sed -i 's/plugins=(git)/plugins=(git sudo docker ssh rsync)/' ~/.zshrc
source ~/.zshrc

Плагин sudo позволяет нажимать Esc дважды — и перед командой появится sudo. docker добавит автодополнение для Docker.

Итог

Мы серьёзно повысили безопасность сервера: парольный вход отключён, root доступен только по ключу. А заодно сделали работу в терминале приятнее — zsh, oh-my-zsh и powerlevel10k.

В следующей части займёмся базовой настройкой системы: локаль, часовой пояс, swap и обновление пакетов.

Комментарии

Комментарии пока не подключены.