SSH учетные данные в образе докера - PullRequest
2 голосов
/ 13 июня 2019

У меня правильно работает приложение с docker-compose up.Это приложение подключается с помощью SSH к моей хост-машине и выполняет некоторые команды.Прямо сейчас я предоставляю учетные данные SSH, записывая их в исходный код следующим образом:

const pass = 'mypassword';
let username = 'myusername';
let host = '172.17.0.1';

Я пытаюсь следовать этому руководству, чтобы предоставить учетные данные лучшим способом.,Я не могу понять, как работает эта строка privateKey: require('fs').readFileSync('/here/is/my/key') Это относительный путь, является ли "ключ" файл с паролем в виде простого текста?Есть ли что-то, что я должен предоставить с моей машины?Как я могу дать учетные данные в док-контейнере?

1 Ответ

1 голос
/ 14 июня 2019

Как правило, для передачи параметров в контейнер, который будет прочитан вашим сценарием Node.js, вы можете:

Для секретных данных, таких как учетные данные SSH, я бы рекомендовал не использовать , используя аргументы или переменные среды, поскольку их можно проверять из различных источников. Эта статья хорошо объясняет, почему: https://diogomonica.com/2017/03/27/why-you-shouldnt-use-env-variables-for-secret-data/

Вместо этого я бы создал простой файл конфигурации, который может прочитать ваш скрипт Node.js.

{
   "username": "myuser",
   "password": "pass",
   "host": "172.17.0.1",
   ...
}

Вы можете поместить этот файл в каталог вашей хост-системы и смонтировать его под /myvolume в контейнер при запуске вашего контейнера:

docker run -it -v host-directory:/myvolume myimage

Ваш скрипт Node.js теперь может читать файл JSON:

const configFilePath = "/myvolume/secret-config.json"
const config = JSON.parse(fs.readFileSync(configFilePath));

// now you can use config.host, config.username and config.password

В качестве дополнительного примечания: я рекомендую настроить удаленный SSH-сервер на использование аутентификации с использованием закрытого / открытого ключа, поскольку пароли обычно менее защищены. После того, как вы настроили аутентификацию с закрытым / открытым ключом, вы можете поместить файл закрытого ключа на тот же том и загрузить его из скрипта Node.js аналогичным образом:)

...