Mijn bedrijf heeft SSH-authenticatie met openbare sleutel uitgeschakeld, daarom moet ik handmatig invoeren elke keer mijn wachtwoord (ik veronderstel niet dat ik /etc/ssh/sshd_config verander).

Echter gssapi-keyex en gssapi-with-mic authenticaties zijn ingeschakeld (zie hieronder ssh debug-uitvoer).

Hoe kan ik in dit geval automatisch inloggen gebruiken?
Kan ik misbruik maken van gssapi-keyex en / of gssapi-with-mic authenticaties?

> 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). 

Opmerkingen

  • Python ‘ s fabric doet uitstekend werk met SSH-automatisering.
  • Hallo @ DanGarthwaite Gebruikt u Fabric om handmatig in te loggen op andere externe servers? Kunt u alstublieft uitleggen hoe u het gebruikt? Geef een antwoord. Proost
  • Als u zich ‘ t in een Kerberos-rijk (of Active Directory-domein) bevindt, is het onwaarschijnlijk dat GSSAPI nuttig voor u is. Dat gezegd hebbende, lijkt het uitschakelen van authenticatie met openbare sleutels nogal absurd.
  • @olibre Fabric is een hulpprogramma om commandos uit te voeren op een of meer servers via SSH. Deze commandos zijn gewoonlijk georganiseerd in een ” fabfile “, zoals een Makefile. Het doet buitengewoon goed werk door SSH te laten verdwijnen (zodra je bent geverifieerd) en behandelt alle vele manieren waarop SSH-clients en -servers de neiging hebben om de controle te onderbreken. Een korte handleiding is beschikbaar: docs.fabfile.org/en/1.7/tutorial.html
  • Alsjeblieft @DanGarthwaite, kun je een voorbeeld van een fab bestand dat zou inloggen op een andere machine (SSH gssapi zonder om een wachtwoord te vragen) en een shell zou openen? U kunt het binnen een antwoord geven. (In vijf minuten heb ik in de tutorial niet gevonden hoe dat moet). Cheers;)

Antwoord

Misschien.

  • Kunt u een ticket voor uw opdrachtgever op uw cliëntsysteem, hetzij als onderdeel van het standaard aanmeldingsproces, hetzij handmatig (kinit, MIT Kerberos voor Windows)?
  • Heeft de server een Kerberos-principal of kunt u deze er een geven? Het moet de vorm hebben host/[email protected].
  • Is GSSAPI authenticatie ingeschakeld op uw client?
  • Weet uw klant tot welk domein de server behoort, hetzij door DNS TXT-bronrecord of door lokale mapping?

Als u “ja” zei tegen alle van het bovenstaande, dan gefeliciteerd, je kunt GSSAPIAuthentication gebruiken.

  • Je mag moet ook het delegeren van inloggegevens inschakelen, afhankelijk van uw instellingen.

Teststappen:
(Aannemende: domein = example.com; realm = EXAMPLE.COM)

  1. kinit [email protected]
    • Idealiter wordt dit afgehandeld door uw standaard inlogproces door pam_krb5 of pam_sss (met auth_provider = krb5) in de juiste pam stack.
  2. kvno host/[email protected]
    • Dit is een foutopsporingsstap. ssh doet dit automatisch als je een geldige cache hebt en je praat met een sshd die gssapi-with-mic of gssapi-keyex.
  3. dig _kerberos.example.com txt moet "EXAMPLE.COM"
    • Als alternatief kan de mapping worden opgeslagen in het [domain_realm] -gedeelte van /etc/krb5.conf als .example.com = EXAMPLE.COM, maar de dns methode schaalt veel beter.
  4. ssh -o GSSAPIAuthentication=yes [email protected]
    • Om in te loggen op een andere gebruikersnaam dan die van uw opdrachtgever op de server, moet u de details in kaart brengen waar ik hier niet op inga.

Reacties

  • Hallo. Ik heb je een tijdje geleden +1 gegeven, maar in feite doe ik dat niet weet hoe u uw vier punten moet controleren. (ik ben geen beheerder, maar een ontwikkelaar). Kunt u een opdrachtregel opgeven om de SSH-verbinding te controleren met g gssapiauthentication? Misschien kan ik ook gssapiauthentication op mijn Linux-machine gebruiken. (moet ik daarvoor kinit gebruiken?) Cheers;)

Answer

De 4-stappenmethode is correct (er zijn ook Kerberos SRV-records in DNS die nog eleganter zijn en in elke Active Directory aanwezig zijn). Ik gebruik dit de hele tijd, en heb deze bovenstaande pubkey-methoden bepleit, voornamelijk vanwege veiligheids- en controlegerelateerde redenen.

Dat gezegd hebbende, geeft dit alleen interactieve login, hoewel het quasi-interactief kan zijn als je eenmaal een ticket op je werkstation hebt gekregen.Het Kerberos-ticket werkt net als de SSH-agent; als je het eenmaal hebt, zijn nieuwe verbindingen onmiddellijk en zonder wachtwoorden; zij het met een tijdslimiet.

Om interactieve batch-login te krijgen, heb je een keytab-bestand nodig, een bestand dat in wezen het wachtwoord voor een Kerberos-account bevat, net zoals de privé-helft van een SSH-sleutel. De desbetreffende veiligheidsmaatregelen zijn van toepassing; vooral omdat de keytab niet is gecodeerd of beveiligd met een wachtwoord.

Ik ben nogal terughoudend om mijn gebruikers hun keytabs voor hun persoonlijke accounts te geven, maar gebruik agressief serviceaccounts met minimale machtigingen voor verschillende batchtaken, vooral wanneer het van cruciaal belang is dat inloggegevens worden gedelegeerd naar de externe systeem, iets dat pubkey eenvoudigweg niet kan bereiken.

Keytabs kunnen worden gemaakt met ktutil op Unix of KTPASS.EXE op Windows (de laatste van AD Kerberos-services). Houd er rekening mee dat ktutil in twee smaken bestaat, Heimdal en MIT, en dat hun syntaxis verschilt. Het helpt om de manpage op een relevant systeem te lezen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *