O daemon de chaveiro do GNOME às vezes não está pedindo senha, precisa fornecê-lo via linha de comando

2

Eu uso uma máquina CentOS 7.5, configurada com autenticação pubkey para ssh em servidores remotos. Normalmente, assim que eu ssh para o primeiro servidor, eu recebo um prompt gráfico do GNOME pedindo para digitar minha frase secreta para destravar a chave secreta, então não é mais solicitado durante a sessão do GNOME.

No entanto, às vezes me perguntam a frase secreta diretamente no terminal:

Enter passphrase for key '/home/dr01/.ssh/id_rsa': 

Isso é irritante, pois eu teria que digitar a frase toda vez que eu me conectasse a um servidor. Portanto, nesses casos, simplesmente reinicio a máquina.

O daemon do GNOME Keyring é executado na inicialização como /usr/bin/gnome-keyring-daemon --start --components=pkcs11 .

Reiniciar não tem efeito:

[dr01@centos7 ~]$ /usr/bin/gnome-keyring-daemon -r 
** Message: Replacing daemon, using directory: /run/user/1001/keyring
GNOME_KEYRING_CONTROL=/run/user/1001/keyring
SSH_AUTH_SOCK=/run/user/1001/keyring/ssh

depois disso, ele ainda pede a senha da chave privada na linha de comando.

Eu também tentei reiniciá-lo com

/usr/bin/gnome-keyring-daemon -r --unlock

mas trava. Um strace imprime isso:

(...)
read(3, "5{26.3571\f6A42276V'2503@3>%3"..., 120) = 120
getrusage(RUSAGE_SELF, {ru_utime={0, 2440}, ru_stime={0, 7321}, ...}) = 0
times({tms_utime=0, tms_stime=0, tms_cutime=0, tms_cstime=0}) = 429541253
futex(0x7f0889a5e548, FUTEX_WAKE_PRIVATE, 2147483647) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f088aa6a000
mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f088aa66000
mlock(0x7f088aa66000, 16384)            = 0
read(0, 

e congela após o read(0, .

Como posso corrigir esse problema?

    
por dr01 03.08.2018 / 08:58

1 resposta

2

Quando o prompt de frase secreta aparecer no terminal, isso provavelmente significa que a variável de ambiente SSH_AUTH_SOCK não foi passada para o comando ssh nesse contexto.

Ao usar o daemon de chaveiro do GNOME como um agente SSH (ou, na verdade, qualquer agente SSH), a variável SSH_AUTH_SOCK deve apontar para um soquete UNIX que é criado pelo programa de agente SSH (o daemon de chaveiro GNOME em seu caso) ou sshd , se você estiver trabalhando por meio de uma conexão SSH e o encaminhamento de conexão do agente estiver ativado.

Em outras palavras, talvez você tenha feito algo que faz com que o ambiente do usuário seja redefinido. Talvez você tenha usado sudo e o SSH_AUTH_SOCK não esteja na lista de variáveis de ambiente sudo tem permissão para preservar? Ou talvez você esteja executando a função de escape de shell de algum outro programa, e esse programa não passa a variável SSH_AUTH_SOCK para o shell que executa?

    
por 11.08.2018 / 22:53