Minha empresa desativou a autenticação de chave pública SSH, portanto, tenho que inserir manualmente cada vez que minha senha (não devo alterar /etc/ssh/sshd_config).

No entanto, gssapi-keyex e gssapi-with-mic as autenticações estão ativadas (veja abaixo ssh saída de depuração).

Como poderia usar o login automático neste caso?
Posso explorar gssapi-keyex e / ou gssapi-with-mic autenticações?

> ssh -v -o PreferredAuthentications=publickey hostxx.domainxx OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to hostxx.domainxx [11.22.33.44] port 22. debug1: Connection established. debug1: identity file /home/me/.ssh/identity type -1 debug1: identity file /home/me/.ssh/id_rsa type -1 debug1: identity file /home/me/.ssh/id_dsa type 2 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3 debug1: match: OpenSSH_5.3 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.3 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5 none debug1: kex: client->server aes128-ctr hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Host "hostxx.domainxx" is known and matches the RSA host key. debug1: Found key in /home/me/.ssh/known_hosts:2 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: gssapi-keyex,gssapi-with-mic,password debug1: No more authentication methods to try. Permission denied (gssapi-keyex,gssapi-with-mic,password). 

Comentários

  • Python ‘ s fabric faz um ótimo trabalho ao lidar com automação SSH.
  • Olá @ DanGarthwaite Você usa o Fabric para fazer login manualmente em outros servidores remotos? Por favor, você pode explicar como você o usa. Forneça uma resposta. Saudações
  • Se você não ‘ t em um domínio Kerberos (ou domínio do Active Directory), o GSSAPI provavelmente não será útil para você. Dito isso, desabilitar a autenticação de chave pública parece um tanto absurdo.
  • @olibre Fabric é um utilitário para executar comandos em um ou mais servidores por SSH. Esses comandos são geralmente organizados em um ” fabfile “, como um Makefile. Ele faz um trabalho extremamente bom em fazer o SSH desaparecer (uma vez que você autentica) e lida com todas as muitas maneiras que clientes e servidores SSH tendem a interromper o controle. Um tutorial rápido está disponível: docs.fabfile.org/en/1.7/tutorial.html
  • Por favor, @DanGarthwaite, você poderia dar um exemplo de um arquivo fab que faria o login em outra máquina (SSH gssapi sem pedir uma senha) e abriria um shell? Você pode fornecer isso em uma resposta. (Em cinco minutos, não encontrei no tutorial como fazer isso). Saúde;)

Resposta

Talvez.

  • Você pode obter uma tíquete para seu principal em seu sistema cliente como parte do processo de login padrão ou manualmente (kinit, MIT Kerberos para Windows)?
  • O servidor tem um Kerberos principal ou você pode definir um? Deve estar no formato host/[email protected].
  • A autenticação GSSAPI está habilitada em seu cliente?
  • Seu cliente sabe a qual domínio o servidor pertence pelo registro de recurso DNS TXT ou mapeamento local?

Se você disse “sim” para todos acima, então parabéns, você pode usar GSSAPIAuthentication.

  • Você pode também precisa habilitar a delegação de credencial, dependendo de sua configuração.

Etapas de teste:
(assumindo: domínio = exemplo.com; realm = EXEMPLO.COM)

  1. kinit [email protected]
    • Idealmente, isso é tratado por seu processo de login padrão incluindo pam_krb5 ou pam_sss (com auth_provider = krb5) no pam stack apropriado.
  2. kvno host/[email protected]
    • Esta é uma etapa de depuração. ssh faz isso automaticamente se você tiver um cache válido e estiver falando com um sshd que suporte gssapi-with-mic ou gssapi-keyex.
  3. dig _kerberos.example.com txt deve retornar "EXAMPLE.COM"
    • Como alternativa, o mapeamento pode ser armazenado na [domain_realm] seção de /etc/krb5.conf como .example.com = EXAMPLE.COM, mas o método dns escala muito melhor.
  4. ssh -o GSSAPIAuthentication=yes [email protected]
    • Para fazer login em um nome de usuário diferente do seu principal no servidor, você terá que saber mapear os detalhes dos quais não vou entrar aqui.

Comentários

  • Oi. Eu lhe dei +1 há algum tempo, mas, na verdade, não saiba como verificar seus quatro pontos. (Não sou um administrador, apenas um desenvolvedor). Por favor, forneça uma linha de comando para verificar a conexão SSH usando g gssapiauthentication? Talvez eu também possa usar gssapiauthentication em minha máquina Linux. (devo usar kinit para isso?) Saúde;)

Resposta

O método de 4 etapas está correto (também existem registros Kerberos SRV no DNS que são ainda mais elegantes e estão presentes em todos os Active Directory). Eu uso isso o tempo todo, e tenho defendido os métodos pubkey acima, principalmente por razões de segurança e controle.

Dito isso, isso só fornece login interativo, embora possa ser quase interativo depois que você tiver um tíquete na estação de trabalho.O tíquete Kerberos atua de forma muito semelhante ao agente SSH; uma vez que você o tenha, novas conexões são instantâneas e sem senha; embora com um limite de tempo.

Para obter o login de lote interativo, você precisa obter um arquivo keytab, um arquivo que contém essencialmente a senha de uma conta Kerberos, muito parecido com a metade privada de uma chave SSH. De acordo com as precauções de segurança se aplicam; especialmente porque o keytab não é criptografado ou protegido por senha.

Estou bastante relutante em fornecer aos meus usuários seus keytabs para suas contas pessoais, mas estou usando agressivamente contas de serviço com permissões mínimas para vários trabalhos em lote, especialmente onde é essencial que as credenciais sejam delegadas ao controle remoto sistema, algo que o pubkey simplesmente não consegue alcançar.

Os keytabs podem ser criados usando ktutil no Unix ou KTPASS.EXE no Windows (o último dos serviços AD Kerberos). Observe que ktutil existe em dois sabores, Heimdal e MIT, e sua sintaxe é diferente. Ler a página de manual em um sistema relevante ajuda.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *