У меня есть проблема, которую я не могу полностью понять, как ее решить. Вопрос очень распространенный, но я все еще не могу понять, что я делаю неправильно.
Согласно этому документу AWS: Сценарий 2: VPC с общедоступными и частными подсетями (NAT) У меня есть собственный VPC с двумя подсетями: частной и общедоступной. В общедоступной подсети я развернул Ubuntu 16.04 Instance с назначенным EIP. Он также имеет следующие правила входящей группы безопасности:
Type Protocol Port Range Source Description
SSH TCP 22 xx.xx.xx.xx/32 Home IP
и исходящие соответственно:
Type Protocol Port Range Source Description
SSH TCP 22 sg-xxprivatexx Security group ID for instance in private subnet
выглядит хорошо, я могу ssh
это снаружи от моего дома. Нет проблем.
В частной подсети я развернул еще одну машину Ubuntu 16.04 со следующей группой безопасности (правила для входящих подключений):
Type Protocol Port Range Source Description
HTTP TCP 80 sg-xxpublicxxx Security Group ID for bastion instance in public subnet
SSH TCP 22 sg-xxpublicxxx -
и никаких исходящих правил (на самом деле открыто 80, 443 исходящих порта, но, как мне кажется, это не интересная часть). И я все еще могу получить доступ к этой виртуальной машине, используя ssh
из моего бастиона.
Сейчас я просто хочу сделать только одну простую вещь - запустить переадресацию порта ssh, чтобы я мог запустить localhost: 8080 в своем домашнем браузере ПК и увидеть веб-страницу, которую я опубликовал в своем личном экземпляре. Если я правильно понимаю из здесь и здесь (и из здесь также) я должен запустить что-то вроде:
ssh -N -v -L 8080:10.0.1.112:80 ubuntu@3.121.46.99
Что, как я догадываюсь, в основном означает: просто перенаправить трафик с экземпляра частной подсети с IP 10.0.1.112:80
на мою localhost:8080
через мою виртуальную виртуальную машину с именем пользователя ubuntu
, размещенную на EIP 3.121.46.99
.
Отладка заканчивается строками:
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:ZyVHgnF8z5vE5gfNr1S2JDfjhdydZVTNevPRgJZ+sRA /home/matterai/.ssh/key.pem
debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/matterai/.ssh/id_rsa
debug1: Trying private key: /home/matterai/.ssh/id_dsa
debug1: Trying private key: /home/matterai/.ssh/id_ecdsa
debug1: Trying private key: /home/matterai/.ssh/id_ed25519
debug1: No more authentication methods to try.
matterai@3.121.46.99: Permission denied (publickey).
Я играю вокруг этого несколько дней, и я все еще не могу понять, что я делаю неправильно. Это так странно: я могу ssh -A
(чтобы разрешить пересылку) на свой бастион, я могу ssh
на свой частный экземпляр с бастиона. Но я не могу установить SSH туннель, чтобы увидеть мою веб-страницу (в будущем это будет mongodb) без ошибки. Нужен совет или укажите правильное направление, пожалуйста! Спасибо.
UPD # 1
Хорошо, тогда. Если я выполняю переадресацию вручную, используя свой локальный компьютер и мой бастион, я получаю ожидаемый результат. В основном это означает, что нужно запустить эту команду на бастионе:
ubuntu@bastion: ssh -v -N -L 5000:localhost:8000 ubuntu@10.0.1.68
После этого на локальной / домашней машине запускается команда:
matterai@homepc: ssh -v -N -L 5000:localhost:5000 ubuntu@3.121.46.99
Когда я делаю запрос к localhost:5000
на моей локальной машине, я вижу страницу результатов. Могу ли я и как, если это возможно, чтобы объединить эти две команды? (спойлер: да, это возможно: смотрите ответ!)