Использование SSH при проверке Consul

У меня есть сервер с докеризованным Consul Agent (CA). В этом CA я хочу запускать скрипт с хоста, который проверяет, сколько места на диске осталось при проверке сервиса.

Для этого я создал сервис в CA :

{
  "service": {
    "name": "disk-usage-var-re7", 
    "tags": [
      "type:check",
      "env:re7"
    ],
    "checks": [
      {
        "id": "disk-usage-var-re7",
        "name": "Disk Usage /var RE7",
        "args": [
          "sh",
          "-c",
          "ssh consul@hostserver 'disk_usage.sh /dev/mapper/centos-var'"
        ],
        "interval": "5s",
        "timeout": "30s"
      }
    ]
  }
}

Но, когда Consul запускает его, я получил эту ошибку: Host key verification failed.

Я использую официальный образ Docker от Consul (Alpine), версия 1.6.1, и я выполнил эти команды в контейнере :

docker exec consul apk add openssh
docker exec -it consul ssh-keygen -t rsa

docker cp consul:/root/.ssh/id_rsa.pub /tmp

su consul
umask 077 && mkdir ~/.ssh
umask 077 && touch ~/.ssh/authorized_keys
cat /tmp/id_rsa.pub > /home/consul/.ssh/authorized_keys
rm -f /tmp/id_rsa.pub

Когда я пытаюсь

docker exec -it consul ssh consul@hostserver 'disk_usage.sh /dev/mapper/centos-var'

В первый раз, SSH спрашивает меня :

The authenticity of host 'hostserver (::1)' can't be established.
ECDSA key fingerprint is SHA256:MlsT6sDr9xXuOurqBJu4e+a8m2De3Lu4ctJSB+5RNmk.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'hostserver' (ECDSA) to the list of known hosts.

И после этого, скрипт все еще работает. Но не с проверкой Консула.

Что я делаю не так?

Большое спасибо.

0
задан 24 August 2021 в 10:35
1 ответ

Хорошо, я нашел, что произошло. Пользователь по умолчанию в контейнере — root, но пользователь, запускающий Consul, — consul.

Таким образом, вы должны запустить контейнер от имени пользователя consul, указав -u consul и использовать ssh-keygen с правильным пользователем.

Теперь взгляните на правильные команды:

docker exec -it -u consul consul ssh-keygen -t rsa

docker cp consul:/home/consul/.ssh/id_rsa.pub /tmp

su consul
cat /tmp/id_rsa.pub > /home/consul/.ssh/authorized_keys
rm -f /tmp/id_rsa.pub

И скрипт работает!

0
ответ дан 24 August 2021 в 12:27

Теги

Похожие вопросы