Я попытался создать пользователя с паролем через 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"
Есть ли что-то, что я пропустил? Спасибо заранее!
Как отметил @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 , но необходимо создать необходимую соль.