Gere uma senha criptografada para uma sessão de tela GNU

3

Como gerar programaticamente uma senha para um Tela GNU sessão?

Normalmente, para definir uma senha para uma tela GNU existente, temos que:

  • Iniciar uma tela
  • Faz Ctrl + UMA :senha
  • Após reconectar, a tela solicitará a senha

E para aplicar a senha a novas sessões de tela:

  • Faz Ctrl + UMA ]
  • Copie a senha criptografada
  • Coloque a senha criptografada em ~/.screenrc (ou algum arquivo personalizado) precedido por password declaração
  • Na próxima partida ( screen -c "/path/to/custom_screenrc para arquivos personalizados), a tela pedirá a senha

São várias etapas manuais para gerar uma senha criptografada.

Eu quero executar um comando para gerar a senha criptografada para ser colocado em .screenrc.

KrisWebDev
fonte

Respostas:

2

A tela GNU usa a biblioteca C do GNU crypt ( wikipedia , manual ) com encriptação DES e um sal aleatório composto por 2 caracteres alfabéticos maiúsculos aleatórios.

Então vamos usar mkpasswd de whois pacote que depende da mesma biblioteca:

sudo apt-get install whois

Em seguida, gere a senha criptografada:

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

Da próxima vez que você começar uma nova tela, ele pedirá a senha.

Alternativa para aplicar a senha somente a determinadas telas (novas):

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

Você pode excluir com segurança o arquivo de configuração temporária quando a tela for iniciada. A senha criptografada é armazenada na memória depois de iniciada.

Nota:

  • test é a senha.
  • SO é o sal. Você pode manter esse sal ou substituí-lo por quaisquer 2 caracteres alfabéticos maiúsculos, ou seja, ^[A-Z]{2,2}$ na linguagem regex. Apenas para informações (e para força bruta), os dois primeiros caracteres da senha criptografada são de fato o sal.
  • Para uma pequena segurança adicional de arquivos conf temporários de tela, armazene-o na RAM em vez de no disco rígido, usando /run/shm ao invés de /tmp.
KrisWebDev
fonte