Как вы подключаетесь к удалённой машине в облаке?
Основные способы подключения к удалённой машине в облаке
SSH (для Linux/Unix) — самый распространённый способ. Обычно используется аутентификация по ключу (PEM/PEM + passphrase), команда вида ssh -i ~/.ssh/key.pem user@IP. Для разных образов стандартные имена пользователей: ubuntu, ec2-user, centos, root (не рекомендуется). SSH поддерживает агент (ssh-agent), ProxyJump (для bastion/jump-host), проброс портов и SOCKS-прокси.
RDP (для Windows) — через порт 3389 с помощью клиента Remote Desktop (mstsc, Microsoft Remote Desktop). Часто комбинируют с bastion/VPN или облачными сервисами типа Azure Bastion, чтобы не открывать RDP в публичный интернет.
Web-консоль провайдера — «SSH in browser» / «Connect» в панели провайдера (EC2 Instance Connect, GCP Cloud Console SSH, Azure Cloud Shell). Удобно для быстрого доступа и когда нет настроенных ключей.
Агент-подключения от провайдера — управляемые способы без открытия 22/3389 (например, AWS Systems Manager Session Manager, GCP IAP, Azure Bastion). Позволяют подключаться по IAM-разрешениям, не выставляя портов и не используя публичный IP.
VPN / приватная сеть — подключение к приватному IP внутри VPC/VNet через VPN, Direct Connect или через корпоративную сеть. Часто используется для безопасности: машины не имеют публичных IP.
Bastion / jump host — отдельная машина в DMZ с публичным доступом, через неё заходят в приватные сервера. Настраивают ProxyJump в ~/.ssh/config для удобства.
Файловые протоколы и синхронизация — SCP, SFTP, rsync для копирования файлов; Ansible/Fabric/SSH для автоматизации команд на множестве машин.
Примеры полезных команд
Подключение по ключу:
chmod 600 ~/.ssh/mykey.pem
ssh -i ~/.ssh/mykey.pem ubuntu@203.0.113.12
Через bastion (ProxyJump):
ssh -J bastion-user@bastion.example.com target-user@10.0.2.5
Проброс локального порта к удалённой БД:
ssh -i key.pem -L 5432:127.0.0.1:5432 user@bastion.example.com -N
SOCKS-прокси (динамический):
ssh -D 1080 -i key.pem user@bastion.example.com -N
Копирование файлов:
scp -i key.pem ./file.txt ubuntu@203.0.113.12:/home/ubuntu/
rsync -avz -e "ssh -i ~/.ssh/key.pem" ./localdir ubuntu@203.0.113.12:/home/ubuntu/
Подключение без открытого SSH-порта (пример AWS SSM):
aws ssm start-session --target i-0123456789abcdef0
GCP через IAP:
gcloud compute ssh instance-name --zone zone --tunnel-through-iap
Пример ~/.ssh/config для удобства:
Host bastion
HostName bastion.example.com
User ec2-user
IdentityFile ~/.ssh/bastion.pem
Host private-server
HostName 10.0.2.5
User ubuntu
ProxyJump bastion
IdentityFile ~/.ssh/private.pem
Безопасность, лучшие практики и отладка
Безопасность: отключать аутентификацию по паролю (PasswordAuthentication no), запретить PermitRootLogin, использовать ключи или SSH-сертификаты, ограничивать IP-диапазоны в security groups/NSG, применять IAM/ролей вместо статичных ключей, вести аудит и запись сессий (SSM, Bastion), ротация ключей и минимальные права.
Хардениг bastion: минимальный набор сервисов, логирование, MFA для доступа в консоль, ограничение доступа по IP, использование session-recording при необходимости.
Отладка при проблемах: ssh -vvv для детальной информации; проверка правил облачной сети (security groups, NSG), локального firewall (ufw/iptables), маршрутизации и наличия public IP / floating IP; проверка состояния инстанса в консоли; просмотр системных логов/serial console; временное открытие порта для теста, затем возвращение к безопасным настройкам.
Автоматизация: используйте SSH-агенты, ключи с passphrase, Ansible/Terraform/Cloud SDK для повторяемых подключений и управления. Для корпоративных сценариев — SSH CA (подпись краткоживущих сертификатов) или одноразовые ключи.
Не храните секреты в открытом виде на инстансе; для секретов используйте специализированные менеджеры секретов и instance roles для доступа к ресурсам.