Создать зашифрованный пароль для сеанса экрана GNU

471
KrisWebDev

Как программно сгенерировать пароль для сеанса экрана GNU ?

Обычно, чтобы определить пароль для существующего экрана GNU, мы должны:

  • Начать экран
  • Делать Ctrl+A :password
  • После повторного подключения на экране появится запрос пароля

И чтобы применить пароль к новым сеансам экрана:

  • Делать Ctrl+A ]
  • Скопируйте зашифрованный пароль
  • Поместите зашифрованный пароль в ~/.screenrc (или другой пользовательский файл) перед passwordоператором
  • При следующем запуске ( screen -c "/path/to/custom_screenrcдля пользовательских файлов) на экране появится запрос пароля

Это много ручных шагов для создания зашифрованного пароля.

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

3

1 ответ на вопрос

2
KrisWebDev

Экран GNU использует библиотеку GNU crypt C ( википедия, руководство ) с шифрованием DES и случайную соль, состоящую из 2 случайных букв верхнего регистра.

Итак, давайте использовать mkpasswdиз whoisпакета, который опирается на ту же библиотеку:

sudo apt-get install whois

Затем сгенерируйте зашифрованный пароль:

(echo -n "password "; mkpasswd -m des -S SO "test") >> ~/.screenrc 

В следующий раз, когда вы начнете новый экран, он попросит пароль.

Альтернатива для применения пароля только для определенных (новых) экранов:

tmpconfig="$(mktemp /tmp/.screenrc-XXXXXX)" (echo -n "password "; mkpasswd -m des -S SO "test") > "$tmpconfig" screen -c "$tmpconfig" rm "$tmpconfig" 

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

Замечания:

  • test это пароль.
  • SOэто соль. Вы можете оставить эту соль или заменить ее любыми двумя прописными буквенными символами, то есть ^[A-Z]$на языке регулярных выражений. Просто для информации (и для переборщиков) первые два символа зашифрованного пароля - это действительно соль.
  • Для небольшой дополнительной безопасности временных экранных файлов храните их в оперативной памяти вместо жесткого диска, используя /run/shmвместо /tmp.

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