La mia azienda ha disabilitato lautenticazione con chiave pubblica SSH, quindi devo inserirla manualmente ogni volta la mia password (non dovrei cambiare /etc/ssh/sshd_config
).
Tuttavia gssapi-keyex
e gssapi-with-mic
le autenticazioni sono abilitate (vedi sotto ssh
output di debug).
Come posso utilizzare laccesso automatico in questo caso?
Posso sfruttare gssapi-keyex
e / o gssapi-with-mic
autenticazioni?
> 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).
Commenti
Risposta
Forse.
- Puoi ottenere un ticket per il tuo principale sul tuo sistema client come parte del processo di accesso standard o manualmente (
kinit
, MIT Kerberos per Windows)? - Il server ha un principal Kerberos o puoi dargliene uno? Deve essere nel formato
host/[email protected]
. - Lautenticazione
GSSAPI
è abilitata sul tuo client? - Il tuo client sa a quale ambito appartiene il server tramite il record di risorse DNS TXT o la mappatura locale?
Se hai detto “sì” a tutto di cui sopra, quindi congratulazioni, puoi utilizzare GSSAPIAuthentication
.
- Puoi è inoltre necessario abilitare la delega delle credenziali, a seconda della configurazione.
Passaggi del test:
(supponendo: domain = example.com; realm = EXAMPLE.COM)
-
kinit [email protected]
- Idealmente questo viene gestito dal processo di accesso standard includendo
pam_krb5
opam_sss
(conauth_provider = krb5
) nellappositopam stack
.
- Idealmente questo viene gestito dal processo di accesso standard includendo
-
kvno host/[email protected]
- Questo è un passaggio di debug.
ssh
lo fa automaticamente se disponi di una cache valida e stai parlando con unsshd
che supportagssapi-with-mic
ogssapi-keyex
.
- Questo è un passaggio di debug.
-
dig _kerberos.example.com txt
dovrebbe restituire"EXAMPLE.COM"
- In alternativa, la mappatura può essere archiviata nella
[domain_realm]
sezione di/etc/krb5.conf
come.example.com = EXAMPLE.COM
, ma il metododns
scala molto meglio.
- In alternativa, la mappatura può essere archiviata nella
-
ssh -o GSSAPIAuthentication=yes [email protected]
- Per accedere a un nome utente diverso da quello del tuo principale sul server dovrai sapere per mapparlo i dettagli di cui non sto entrando qui.
Commenti
- Ciao. Ti ho dato +1 qualche tempo fa, ma in realtà non lo faccio sapere come controllare i tuoi quattro punti. (Non sono un amministratore, solo uno sviluppatore). Per favore, potresti fornire una riga di comando per controllare la connessione SSH usando g
gssapiauthentication
? Forse posso anche usaregssapiauthentication
sulla mia macchina Linux. (dovrei usarekinit
per questo?) Cheers;)
Answer
Il metodo in 4 passaggi è corretto (ci sono anche record Kerberos SRV nel DNS che sono ancora più eleganti e sono presenti in ogni Active Directory). Lo uso sempre e ho sostenuto questi metodi sopra pubkey per, principalmente, motivi di sicurezza e controllo.
Detto questo, questo fornisce solo un login interattivo, sebbene possa essere quasi interattivo una volta che hai ottenuto un ticket sulla tua workstation.Il ticket Kerberos si comporta in modo molto simile allagente SSH; una volta installato, le nuove connessioni sono istantanee e prive di password; anche se con un limite di tempo.
Per ottenere un accesso batch interattivo, è necessario ottenere un file keytab, un file che essenzialmente contiene la password per un account Kerberos, molto simile alla metà privata di una chiave SSH. Secondo le precauzioni di sicurezza si applicano; soprattutto perché la keytab non è crittografata o protetta con una password.
Sono piuttosto riluttante a fornire ai miei utenti le schede delle chiavi per i loro account personali, ma utilizzo in modo aggressivo account di servizio con autorizzazioni minime per vari lavori batch, soprattutto dove è fondamentale che le credenziali siano delegate al telecomando sistema, qualcosa che pubkey semplicemente non può ottenere.
I keytab possono essere creati usando ktutil su Unix o KTPASS.EXE su Windows (questultimo dai servizi AD Kerberos). Nota che ktutil esiste in due versioni, Heimdal e MIT, e la loro sintassi è diversa. La lettura della manpage su un sistema pertinente aiuta.
fab
che accede a unaltra macchina (SSH gssapi senza chiedere una password) e apre una shell? Puoi fornirlo allinterno di una risposta. (In cinque minuti, non ho trovato nel tutorial come farlo). Saluti;)