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
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)
-
kinit [email protected]
- Idealmente, isso é tratado por seu processo de login padrão incluindo
pam_krb5
oupam_sss
(comauth_provider = krb5
) nopam stack
apropriado.
- Idealmente, isso é tratado por seu processo de login padrão incluindo
-
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 umsshd
que suportegssapi-with-mic
ougssapi-keyex
.
- Esta é uma etapa de depuração.
-
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étododns
escala muito melhor.
- Como alternativa, o mapeamento pode ser armazenado na
-
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 usargssapiauthentication
em minha máquina Linux. (devo usarkinit
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.
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;)