Вики· Обновлено 19 окт. 2026 г.
Шпаргалка: SSH
SSH: ключи, ~/.ssh/config, jump-хост, туннели, scp и rsync, защита сервера.
Ключи
ssh-keygen -t ed25519 -C "me@laptop" # создать (на своём компьютере)
ssh-copy-id user@server # добавить на сервер
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@server
cat ~/.ssh/id_ed25519.pub # публичная часть — её можно отдавать
ssh-keygen -lf ~/.ssh/id_ed25519.pub # отпечаток
ssh-keygen -p -f ~/.ssh/id_ed25519 # сменить пароль ключа
eval "$(ssh-agent)" && ssh-add # не вводить пароль ключа каждый раз
Без ssh-copy-id (на сервере):
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo "ssh-ed25519 AAAA… me@laptop" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
~/.ssh/config
Host web
HostName 203.0.113.10
User deploy
Port 2222
IdentityFile ~/.ssh/id_ed25519
Host db
HostName 10.0.0.5
User deploy
ProxyJump web # через web
Host *
ServerAliveInterval 30
Дальше просто ssh web, scp file web:, ssh db.
Подключение и выполнение команд
ssh -p 2222 user@server
ssh -J user@bastion user@10.0.0.5 # через промежуточный хост
ssh web 'df -h; uptime' # команда без входа
ssh -v web # почему не пускает
ssh-keygen -R 203.0.113.10 # забыть старый ключ хоста (после переустановки)
Файлы
scp file.tar.gz web:/tmp/
scp web:/var/log/app.log .
scp -r ./dist web:/var/www/app
rsync -avz --progress ./dist/ web:/var/www/app/
rsync -avz --delete ./dist/ web:/var/www/app/ # точная копия (лишнее удалит)
rsync -avz -e "ssh -p 2222" ./data/ user@server:/data/
Туннели
ssh -L 5432:127.0.0.1:5432 web # база сервера на localhost:5432 у вас
ssh -L 8080:10.0.0.5:80 web # сайт из внутренней сети
ssh -R 9000:127.0.0.1:3000 web # ваш localhost:3000 на сервере:9000
ssh -D 1080 web # SOCKS-прокси через сервер
ssh -fN -L 5432:127.0.0.1:5432 web # в фоне, без терминала
Сервер
sshd -t # проверить конфиг
sshd -T | grep -E 'port|passwordauth|permitroot' # что действует
systemctl reload ssh
journalctl -u ssh --since today | grep -E 'Failed|Accepted'
lastb | head # неудачные входы
/etc/ssh/sshd_config.d/10-local.conf:
PasswordAuthentication no
PermitRootLogin prohibit-password
MaxAuthTries 3
Перед PasswordAuthentication no проверьте вход по ключу из второго окна. Всё это с автооткатом делает rs harden.
