É possível anexar 'kinit' à primeira tentativa de 'ssh' sem um tíquete Kerberos?

1

Minha universidade usa a autenticação baseada em Kerberos para fazer login em nossos servidores Unix.

Uma maneira de obter login sem senha é executar kinit , digitar minha senha e executar ssh@host .

Para essa configuração, faço o seguinte dentro do meu .ssh/config :

Host SchoolHost1 SchoolHost2
    GSSAPIKeyExchange yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials yes

Minha pergunta é: posso pular a etapa kinit e executar ssh diretamente, de forma que a primeira tentativa de ssh capture automaticamente um tíquete kerberos para que as tentativas subsequentes de ssh tenham o bilhete e não requer uma senha?

Atualização: O login da chave pública não é suportado pelo sistema da Universidade, porque o servidor não pode ler o arquivo authorized_keys antes do login. Esta é uma propriedade do sistema Kerberos / AFS para o qual não há realmente nenhuma solução alternativa.

    
por merlin2011 11.03.2014 / 02:09

2 respostas

1

No seu laptop, eu redefiniria ssh no arquivo ~/.bash_login ou ~/.bashrc

ssh () 
{ 
    kinit -R || kinit -r 8days
    command ssh "$@"
}

para atualizar seu tíquete, se possível, caso contrário, faça um novo - se a política do site do AFS concordar.

O login de chave pública é possível, mas apenas como último recurso, se você realmente não puder Kerberizar seu laptop - no servidor ssh, mova chaves secretas (se houver) de ~/.ssh/ para ~/.ssh/private/ , chmod 700 e fs setacl para proteger suas chaves privadas, fs listacl ~/.ssh/private/ para checar somente se você tem acesso, finalmente faça ~/.ssh e ~/.ssh/authorized_keys legível, então sshd pode vê-los para entrar - mas até você fazer algo como ( kinit -R || kinit -r 8days ) && aklog; klist você não terá acesso ao AFS - então scp pode ver /tmp/ mas não /afs/ - se você souber como obter tickets após scp entrar e antes de acessar os arquivos, por favor me avise!

    
por 30.12.2016 / 21:01
0

Sim, você pode fazer isso com um script rápido:

#!/bin/bash

klist || kinit

ssh user@host

Coloque isso no seu PATH e execute-o em vez de ssh.

Isso funciona usando o utilitário klist . Se você não tiver tickets ativos, klist falhará e kinit será executado. Se você tiver um ticket ativo, klist será bem-sucedido e kinit não será executado.

Eu não testei isso completamente, então provavelmente há problemas enormes com isso.

    
por 08.12.2014 / 20:54