Тайм-аут упаковщика SSH при настройке пользовательских VPC, подсети и группы безопасности - PullRequest
0 голосов
/ 05 июля 2019

Так что мне нужно было иметь возможность переместить мои сборщики упаковщиков в частный VPC и добавить заблокированную группу безопасности, которая разрешала ssh только с ограниченного диапазона IP-адресов, таким образом:

"builders": [{
"type": "amazon-ebs",
"associate_public_ip_address": false,
"access_key": "{{user `aws_access_key`}}",
"secret_key": "{{user `aws_secret_key`}}",
"region": "{{user `aws_region`}}",
"source_ami_filter": {
  "filters": {
    "virtualization-type": "hvm",
    "name": "{{user `ami_source_name`}}",
    "root-device-type": "ebs"
  },
"owners": ["{{user `ami_source_owner_id`}}"],
"most_recent": true
},
"instance_type": "t3.small",
"iam_instance_profile": "{{user `iam_instance_profile`}}",
"ssh_username": "{{user `ssh_username`}}",
"ami_name": "{{user `ami_name_prefix`}}_{{user `ami_creation_date`}}",
"ami_users": "{{user `share_amis_with_account`}}",
"ebs_optimized": true,
"vpc_id": "vpc-123456",
"subnet_id": "subnet-123456",
"security_group_id": "sg-123456",
"user_data_file": "scripts/disable_tty.sh",
"launch_block_device_mappings": [{
  "device_name": "{{user `root_device_name`}}",
  "volume_size": 10,
  "volume_type": "gp2",
  "delete_on_termination": true
}],
"tags": {
  "packer": "true",
  "ansible_role": "{{user `ansible_role`}}",
  "builtby": "{{user `builtby`}}",
  "ami_name": "{{user `ami_name_prefix`}}_{{user `ami_creation_date`}}",
  "ami_name_prefix": "{{user `ami_name_prefix`}}",
  "project": "{{user `project`}}"
}
 }]

Для начала я добавил «associate_public_ip_address: false» (по умолчанию также false), так как каждый раз, когда я запускал упаковщик, хосту назначался публичный IP-адрес, но даже добавляя, что он все еще получает публичный IP-адрес ???? ????

Я использовал группу безопасности, которую я назначил для подчиненных сборки Jenkins, которые также общаются через порт 22, и у меня не было проблем с доступом к ним из любой части моей инфраструктуры.

Я получаю эту ошибку:

1562344256,,ui,error,Build 'amazon-ebs' errored: Timeout waiting for SSH.
1562344256,,error-count,1
1562344256,,ui,error,\n==> Some builds didn't complete successfully and had errors:
1562344256,amazon-ebs,error,Timeout waiting for SSH.
1562344256,,ui,error,--> amazon-ebs: Timeout waiting for SSH.

В течение периода ожидания ответа SSH я смог nc -v 1.2.3.5 22 * ​​1012 * и получил соединение, поэтому группа безопасности разрешает связь через порт 22 с моего IP-адреса.

Если я изменяю группу безопасности на 0.0.0.0 / 0 , она сразу подключается, но почему, когда я могу nc к порту 22 с ограниченной группой безопасности, упаковщик может не инициировать SSH соединение? Упаковщик пытается использовать публичный IP-адрес, который я не могу на всю жизнь отключить?

Я подумал, что было бы весьма полезно tcpdump трафика на порту 22, чтобы посмотреть, что происходит, но у меня заблокирован ноутбук, который не позволяет установить этот конкретный удобный элемент.

Я также могу подключиться к сборщику ssh с моего ноутбука, но получить Слишком много ошибок аутентификации Ошибка и не могу войти, чтобы увидеть, что происходит.

1 Ответ

0 голосов
/ 08 июля 2019

Таким образом, причина, по которой сборщик пакетов получает общедоступный IP-адрес, связана с настройками подсети - map_public_ip_on_launch = true .

Таким образом, ответом является создание новой частной подсети для сборщика пакетов, создание нового NAT GW в общедоступной подсети, а затем маршрутизация из частной подсети в NAT GW с новой таблицей маршрутизации.

...