AuthorizedKeysCommand não sendo executado

1

Estou tentando autorizar sessões SSH usando o AuthorizedKeysCommand in sshd_config . Por algum motivo, o AuthorizedKeysCommand não está sendo executado, embora o fluxo do SSH, pelo menos, inicie o fluxo AuthorizedKeysCommand .

Aqui está minha configuração AuthorizedKeysCommand do meu /etc/ssh/sshd_config :

AuthorizedKeysCommand /usr/local/src/authorized_keys_command.sh
AuthorizedKeysCommandUser nobody

Alterei o LogLevel para DEBUG e observei o seguinte nos registros:

debug1: temporarily_use_uid: 65534/65534 (e=0/0)
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 65534/65534 (e=0/0)
debug1: restore_uid: 0/0

Isso significa que o daemon SSH muda para o usuário nobody , mas não faz nada depois disso.

Eu tenho as seguintes linhas no meu script authorized_keys_command.sh :

#!/bin/bash -e

echo "Invoked AuthorizedKeysCommand"

if [ -z "$1" ]; then
  echo "No User Specified"
  exit 1
fi

echo "Username : $1"

Eu até tentei depurar o problema passando /bin/echo e /bin/date para o AuthorizedKeysCommand sem sucesso.

Minha configuração é a seguinte: Sistema Operacional: Ubuntu 16.04.1 LTS (com todos os últimos patches e atualizações dos repositórios apt (ubuntu) aplicados) Servidor OpenSSH: OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g 1 Mar 2016

O que eu posso estar fazendo errado aqui?

    
por shine 03.02.2017 / 11:47

1 resposta

1

A página de manual para sshd_config informa claramente o que é esperado do comando para fazer e gerar:

AuthorizedKeysCommand

Specifies a program to be used to look up the user's public keys. The program must be owned by root, not writable by group or others and specified by an absolute path.

Arguments to AuthorizedKeysCommand may be provided using the following tokens, which will be expanded at runtime: %% is replaced by a literal '%', %u is replaced by the username being authenticated, %h is replaced by the home directory of the user being authenticated, %t is replaced with the key type offered for authentication, %f is replaced with the fingerprint of the key, and %k is replaced with the key being offered for authentication. If no arguments are specified then the username of the target user will be supplied.

The program should produce on standard output zero or more lines of authorized_keys output (see AUTHORIZED_KEYS in sshd(8)). If a key supplied by AuthorizedKeysCommand does not successfully authenticate and authorize the user then public key authentication continues using the usual AuthorizedKeysFile files. By default, no AuthorizedKeysCommand is run.

Então, sim, o date e o echo que você tentou escrever em seu comando provavelmente foram ignorados como saída de lixo / inválido. Se você deseja que isso autorize seu usuário, você precisa de um script para produzir a chave pública no formato esperado (consulte a página de manual para sshd para obter mais informações).

    
por 04.02.2017 / 22:25