Title: 🔑 SSH — Commands & Config Group: Network Icon: 🔑 Order: 6 ## Table of Contents - [Basic Connection](#-basic-connection--базовое-подключение) - [Key Management](#-key-management--управление-ключами) - [Port Forwarding & Tunnels](#-port-forwarding--tunnels--проброс-портов-и-туннели) - [ProxyJump & Bastion](#-proxyjump--bastion--прокси-прыжок-и-бастион) - [File Transfer (SCP/SFTP)](#-file-transfer-scpsftp--передача-файлов) - [SSH Config](#-ssh-config--конфигурация-ssh) - [Security & Hardening](#-security--hardening--безопасность-и-усиление) - [Troubleshooting](#-troubleshooting--устранение-неполадок) - [Real-World Examples](#-real-world-examples--примеры-из-практики) --- # 🔌 Basic Connection / Базовое подключение ```bash ssh @ # Connect to host / Подключиться к хосту ssh -p 2222 @ # Custom port / Нестандартный порт ssh -i ~/.ssh/id_ed25519 @ # Specific key / Определённый ключ ssh -p 2222 -i ~/.ssh/id_ed25519 @ # Port + key / Порт и ключ ssh -o StrictHostKeyChecking=no @ # Skip host key check / Пропустить проверку ключа ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=3 @ # Keepalive / Поддержание соединения ssh -v @ # Verbose (debug) / Подробный вывод ssh -vv @ # More verbose / Ещё более подробный ssh -vvv @ # Maximum verbosity / Максимальная подробность ``` # 🔑 Key Management / Управление ключами ```bash ssh-keygen -t ed25519 -C "@" # Generate ED25519 key / Генерация ED25519 ключа ssh-keygen -t rsa -b 4096 -C "@" # Generate RSA 4096 key / Генерация RSA 4096 ключа ssh-copy-id @ # Install public key / Установить публичный ключ ssh-copy-id -i ~/.ssh/id_ed25519.pub @ # Install specific key / Установить конкретный ключ ssh-copy-id -p 2222 @ # With custom port / С нестандартным портом ssh-add ~/.ssh/id_ed25519 # Add key to agent / Добавить ключ в агент ssh-add -l # List added keys / Список добавленных ключей ssh-add -D # Remove all keys / Удалить все ключи ssh-keygen -lf ~/.ssh/id_ed25519.pub # Show key fingerprint / Показать отпечаток ключа ssh-keygen -p -f ~/.ssh/id_ed25519 # Change passphrase / Изменить парольную фразу ssh-keygen -R # Remove host from known_hosts / Удалить хост из known_hosts cat ~/.ssh/id_ed25519.pub # View public key / Просмотр публичного ключа ``` # 🚪 Port Forwarding & Tunnels / Проброс портов и туннели ```bash ssh -L 8080:127.0.0.1:80 @ # Local port forward / Локальный проброс порта ssh -L 3306::3306 @ # Forward to remote DB / Проброс к удалённой БД ssh -R 2222:127.0.0.1:22 @ # Remote port forward / Обратный проброс порта ssh -D 1080 @ # SOCKS proxy / SOCKS прокси ssh -N -L 8080:127.0.0.1:80 @ # No command (tunnels only) / Только туннели ssh -f -N -L 8080:127.0.0.1:80 @ # Background tunnel / Туннель в фоне ssh -L 8080:localhost:80 -L 8443:localhost:443 @ # Multiple tunnels / Несколько туннелей ssh -R 0:localhost:8080 @ # Auto-assign remote port / Автоматический выбор порта ``` # 🏰 ProxyJump & Bastion / Прокси-прыжок и бастион ```bash ssh -J @ @ # ProxyJump via bastion / Прыжок через бастион ssh -J @:2222 @ # Bastion with port / Бастион с портом ssh -J @,@ @ # Chain jumps / Цепочка прыжков ssh -o ProxyCommand="ssh -W %h:%p @" @ # Proxy command / Команда прокси ``` # 📁 File Transfer (SCP/SFTP) / Передача файлов ```bash scp file.txt @:/path/ # Copy file to remote / Копировать файл на удалённый сервер scp @:/remote/file.txt ./ # Copy from remote / Копировать с удалённого сервера scp -r dir/ @:/path/ # Copy directory / Копировать каталог scp -P 2222 file.txt @:/path/ # SCP with port / SCP с портом scp -i ~/.ssh/id_ed25519 file.txt @:/path/ # SCP with key / SCP с ключом scp -3 @:/file @:/path/ # Copy between remotes / Копировать между серверами sftp @ # Start SFTP session / Начать SFTP сессию sftp -P 2222 @ # SFTP with port / SFTP с портом ``` # ⚙️ SSH Config / Конфигурация SSH ```bash # ~/.ssh/config example / Пример ~/.ssh/config Host myserver HostName User Port 22 IdentityFile ~/.ssh/id_ed25519 ServerAliveInterval 30 ServerAliveCountMax 3 Host bastion HostName User IdentityFile ~/.ssh/bastion_key Host production HostName User ProxyJump bastion IdentityFile ~/.ssh/prod_key Host *.internal ProxyJump bastion User Host * AddKeysToAgent yes UseKeychain yes ServerAliveInterval 60 ServerAliveCountMax 3 ``` # 🔒 Security & Hardening / Безопасность и усиление ```bash ssh-keygen -t ed25519 -a 100 # Ed25519 with KDF rounds / Ed25519 с раундами KDF ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no @ # Key-only auth / Только ключи ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 @ # Use only specified key / Только указанный ключ chmod 700 ~/.ssh # Secure SSH directory / Защитить каталог SSH chmod 600 ~/.ssh/id_ed25519 # Secure private key / Защитить приватный ключ chmod 644 ~/.ssh/id_ed25519.pub # Secure public key / Защитить публичный ключ chmod 600 ~/.ssh/authorized_keys # Secure authorized_keys / Защитить authorized_keys chmod 600 ~/.ssh/config # Secure config / Защитить конфиг ``` # 🔧 Troubleshooting / Устранение неполадок ```bash ssh -vvv @ # Maximum debug output / Максимальная отладка ssh -o ConnectTimeout=10 @ # Connection timeout / Таймаут подключения ssh -o ConnectionAttempts=3 @ # Retry attempts / Попытки повтора ssh -T @ # No PTY allocation / Без выделения PTY ssh -t @ "command" # Force PTY / Принудительно PTY ssh -Q cipher # List supported ciphers / Список поддерживаемых шифров ssh -Q mac # List supported MACs / Список поддерживаемых MAC ssh -Q kex # List supported key exchanges / Список поддерживаемых обменов ключами cat ~/.ssh/known_hosts # View known hosts / Просмотр известных хостов ssh-keyscan >> ~/.ssh/known_hosts # Add host key / Добавить ключ хоста ``` # 🌟 Real-World Examples / Примеры из практики ```bash ssh -L 3306:localhost:3306 @ -N -f # MySQL tunnel background / Туннель MySQL в фоне ssh -D 1080 -N -f @ && export http_proxy=socks5://127.0.0.1:1080 # SOCKS proxy setup / Настройка SOCKS прокси ssh @ "docker logs -f " # Follow remote logs / Следить за удалёнными логами ssh @ "journalctl -u nginx -f" # Follow remote journal / Следить за удалённым журналом rsync -avz -e "ssh -p 2222 -i ~/.ssh/id_ed25519" src/ @:/dst/ # Rsync over SSH / Rsync через SSH ssh @ "tar czf - /path" | tar xzf - -C ./backup # Remote tar backup / Удалённый tar бэкап ssh -L 5900:localhost:5900 @ # VNC tunnel / VNC туннель ssh -J @ @ "uptime" # Command via bastion / Команда через бастион for host in ; do ssh @$host "uptime"; done # Execute on multiple hosts / Выполнить на нескольких хостах ssh @ 'bash -s' < local_script.sh # Run local script remotely / Запустить локальный скрипт удалённо ``` # 🔄 SSH Agent Forwarding / Проброс SSH-агента ```bash ssh -A @ # Enable agent forwarding / Включить проброс агента # In ~/.ssh/config: # ForwardAgent yes ``` # 🚀 Advanced Techniques / Продвинутые техники ```bash ssh -o ControlMaster=auto -o ControlPath=~/.ssh/cm-%r@%h:%p -o ControlPersist=10m @ # Connection multiplexing / Мультиплексирование ssh -o 'RemoteCommand=tmux attach || tmux new' @ # Auto tmux / Автоматический tmux autossh -M 0 -N -L 8080:localhost:80 @ # Auto-reconnecting tunnel / Авто-переподключаемый туннель ```