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
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)
-
kinit [email protected]
- Idealiter wordt dit afgehandeld door uw standaard inlogproces door
pam_krb5
ofpam_sss
(metauth_provider = krb5
) in de juistepam stack
.
- Idealiter wordt dit afgehandeld door uw standaard inlogproces door
-
kvno host/[email protected]
- Dit is een foutopsporingsstap.
ssh
doet dit automatisch als je een geldige cache hebt en je praat met eensshd
diegssapi-with-mic
ofgssapi-keyex
.
- Dit is een foutopsporingsstap.
-
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 dedns
methode schaalt veel beter.
- Als alternatief kan de mapping worden opgeslagen in het
-
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 ookgssapiauthentication
op mijn Linux-machine gebruiken. (moet ik daarvoorkinit
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.
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;)