Как я могу остановить все контейнеры докеров от удаленной команды ssh? [dубликат]

Я попытался создать пользователя с паролем через ssh (с правами root) следующим образом:

ssh root@123.45.6.7 useradd -p $(openssl passwd -1 1234) newuser

Поступая таким образом, я мог бы успешно создать учетную запись с именем newuser, но я couldn ' t [ms]

Не имеет значения, если я добавляю двойные кавычки:

ssh root@123.45.6.7 "useradd -p $(openssl passwd -1 1234) newuser"

И тогда мне было интересно, могу ли я генерировать хеширование пароль и сохранить его как переменную локально, но все равно не повезло.

password=$(openssl passwd -1 1234) ssh root@123.45.6.7 "useradd -p $password newuser"

Есть ли что-то, что я пропустил? Спасибо заранее!

13
задан 30 March 2017 в 09:23

6 ответов

Это классическая проблема с цитированием.

Проблема: без цитирования или двойного цитирования подстановки команды ($()) и расширения переменной ($ s в хешированном пароле, возвращенном openssl ] обрабатываются как переменный индикатор) выполняются в локальной среде, а не в удаленной оболочке.

Проблема: используют одинарные кавычки вокруг команды useradd, используемые с ssh в локальной оболочке, чтобы предотвратить подстановку команд и расширение переменной в локальной среде, пусть расширения будут выполняться на удаленной не-login, неинтерактивной оболочке:

ssh root@123.45.6.7 'useradd -p "$(openssl passwd -1 1234)" newuser'

Обратите внимание на цитаты. [ ! d5]

Проблемы с безопасностью:

Вход в систему SSH root должен быть отключен, если вы должны включить его, разрешается только проверка подлинности на основе ключа. MD5 уже нарушен, и без соли вы подвергается простой атаке в Rainbow table (даже не требует грубой форсировки / словарной атаки); openssl passwd действительно генерирует случайную соль. Во всяком случае, вы должны действительно рассмотреть возможность использования SHA-2 с солью. Пароли, переданные в качестве аргументов для команд, могут быть видны другим процессам в (удаленной) системе; это зависит от того, как монтируется procfs (смотрите hidepid), и если команда переписывает себя (это, по-видимому, это не так)
21
ответ дан 18 July 2018 в 15:30

Это классическая проблема с цитированием.

Проблема: без цитирования или двойного цитирования подстановки команды ($()) и расширения переменной ($ s в хешированном пароле, возвращенном openssl ] обрабатываются как переменный индикатор) выполняются в локальной среде, а не в удаленной оболочке.

Проблема: используют одинарные кавычки вокруг команды useradd, используемые с ssh в локальной оболочке, чтобы предотвратить подстановку команд и расширение переменной в локальной среде, пусть расширения будут выполняться на удаленной не-login, неинтерактивной оболочке:

ssh root@123.45.6.7 'useradd -p "$(openssl passwd -1 1234)" newuser'

Обратите внимание на цитаты. [ ! d5]

Проблемы с безопасностью:

Вход в систему SSH root должен быть отключен, если вы должны включить его, разрешается только проверка подлинности на основе ключа. MD5 уже нарушен, и без соли вы подвергается простой атаке в Rainbow table (даже не требует грубой форсировки / словарной атаки); openssl passwd действительно генерирует случайную соль. Во всяком случае, вы должны действительно рассмотреть возможность использования SHA-2 с солью. Пароли, переданные в качестве аргументов для команд, могут быть видны другим процессам в (удаленной) системе; это зависит от того, как монтируется procfs (смотрите hidepid), и если команда переписывает себя (это, по-видимому, это не так)
21
ответ дан 24 July 2018 в 20:39

Это классическая проблема с цитированием.

Проблема: без цитирования или двойного цитирования подстановки команды ($()) и расширения переменной ($ s в хешированном пароле, возвращенном openssl ] обрабатываются как переменный индикатор) выполняются в локальной среде, а не в удаленной оболочке.

Проблема: используют одинарные кавычки вокруг команды useradd, используемые с ssh в локальной оболочке, чтобы предотвратить подстановку команд и расширение переменной в локальной среде, пусть расширения будут выполняться на удаленной не-login, неинтерактивной оболочке:

ssh root@123.45.6.7 'useradd -p "$(openssl passwd -1 1234)" newuser'

Обратите внимание на цитаты. [ ! d5]

Проблемы с безопасностью:

Вход в систему SSH root должен быть отключен, если вы должны включить его, разрешается только проверка подлинности на основе ключа. MD5 уже нарушен, и без соли вы подвергается простой атаке в Rainbow table (даже не требует грубой форсировки / словарной атаки); openssl passwd действительно генерирует случайную соль. Во всяком случае, вы должны действительно рассмотреть возможность использования SHA-2 с солью. Пароли, переданные в качестве аргументов для команд, могут быть видны другим процессам в (удаленной) системе; это зависит от того, как монтируется procfs (смотрите hidepid), и если команда переписывает себя (это, по-видимому, это не так)
21
ответ дан 31 July 2018 в 23:40

Как отметил @heemayl, алгоритм хеш-пароля MD5 устарел, а текущие системы - новые хэши паролей на основе SHA-2, которые имеют настраиваемый коэффициент работы. Но инструмент командной строки OpenSSL, похоже, не поддерживает их.

Утилита chpasswd, однако, позволит вам изменить пароль пользователя в соответствии с системными настройками.

Это должно позволить вам создать нового пользователя и изменить свой пароль на удаленном конце.

echo "newuser:newpass" | ssh root@123.45.6.7 'useradd newuser; chpasswd'

chpasswd берет имя пользователя и пароль из stdin, а не в командной строке , Это фактически является преимуществом, поскольку аргументы командной строки видны для всех других процессов в системе, поэтому, если запустить openssl passwd на пульте дистанционного управления, пароль будет мгновенно виден всем процессам в системе.

I «Не знаю, есть ли готовая утилита командной строки для генерации хэшей паролей, известных функции системы crypt(3). Perl имеет встроенную утилиту chpasswd , но нужно будет создать правильную соль.

7
ответ дан 18 July 2018 в 15:30

Как отметил @heemayl, алгоритм хеш-пароля MD5 устарел, а текущие системы - новые хэши паролей на основе SHA-2, которые имеют настраиваемый коэффициент работы. Но инструмент командной строки OpenSSL, похоже, не поддерживает их.

Утилита chpasswd, однако, позволит вам изменить пароль пользователя в соответствии с системными настройками.

Это должно позволить вам создать нового пользователя и изменить свой пароль на удаленном конце.

echo "newuser:newpass" | ssh root@123.45.6.7 'useradd newuser; chpasswd'

chpasswd берет имя пользователя и пароль из stdin, а не в командной строке , Это фактически является преимуществом, поскольку аргументы командной строки видны для всех других процессов в системе, поэтому, если запустить openssl passwd на пульте дистанционного управления, пароль будет мгновенно виден всем процессам в системе.

I «Не знаю, есть ли готовая утилита командной строки для генерации хэшей паролей, известных функции системы crypt(3). Perl имеет встроенную утилиту chpasswd , но нужно будет создать правильную соль.

7
ответ дан 24 July 2018 в 20:39

Как отметил @heemayl, алгоритм хеш-пароля MD5 устарел, а текущие системы - новые хэши паролей на основе SHA-2, которые имеют настраиваемый коэффициент работы. Но инструмент командной строки OpenSSL, похоже, не поддерживает их.

Утилита chpasswd, однако, позволит вам изменить пароль пользователя в соответствии с системными настройками.

Это должно позволить вам создать нового пользователя и изменить свой пароль на удаленном конце.

echo "newuser:newpass" | ssh root@123.45.6.7 'useradd newuser; chpasswd'

chpasswd берет имя пользователя и пароль из stdin, а не в командной строке , Это фактически является преимуществом, поскольку аргументы командной строки видны для всех других процессов в системе, поэтому, если запустить openssl passwd на пульте дистанционного управления, пароль будет мгновенно виден всем процессам в системе.

I «Не знаю, есть ли готовая утилита командной строки для генерации хэшей паролей, известных функции системы crypt(3). Perl имеет встроенную утилиту chpasswd , но нужно будет создать правильную соль.

7
ответ дан 31 July 2018 в 23:40

Другие вопросы по тегам:

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