Till innehåll på sidan
Till KTH:s startsida

SSH-inloggning från macOS

Instruktioner för att logga in på VS IT:s shell-servrar med SSH-klient på macOS.

Hur loggar du in?

För att logga in på studenternas shell-server, skapa inställningar i ~/.ssh/config

Host student-shell
  HostName student-shell.sys.kth.se
  User username
  PreferredAuthentications gssapi-with-mic
  GSSAPIAuthentication yes
  GSSAPIDelegateCredentials yes

Du kan även behöva ~/.ssh/known_hosts, en lista med host-nycklar. Nycklar för alla servrar finns här, Shell-servrar .

Logga sedan in med

kinit -f username@KTH.SE
ssh student-shell

OBS: Alla exempel använder "username" och "student-shell" – använd ditt KTH-användarnamn (utan @kth.se) och den server du kan logga in på, se Shell-servrar . Anställda bör använda staff-shell eller faculty-shell.

Programvara

De kinit- och ssh-versioner som ingår i macOS fungerar i de flesta fall.

Den SSH-klient som följer med macOS hanterar inte GSSAPIKeyExchange, men man kan använda host-nycklar (known_hosts ovan) för att ansluta till alla VS IT:s shell-servrar.

Du kan även använda en tredjeparts-version, OpenSSH med fullt GSSAPI-stöd kan installeras med antingen HomeBrew eller MacPorts. Detta behövs ej för att ansluta till de allmänna shell-servrarna, men om du installerat den versionen kan du använda GSSAPIKeyExchange på samma sätt som i Linux .

FAQ / Kända problem

Vid felsökning av problem, notera skillnaden mellan att köra t.ex. klist på din lokala dator, och att köra det på servern du loggat in på. Det första kontrollerar att klist har fått biljetter, det andra att ssh-klienten lyckats vidarebefordra biljetterna till servern.

Tredjeparts ssh-klient eller Kerberos (HomeBrew, MacPorts, Conda, etc.)

För att se vilken ssh-klient eller Kerberos-distribution du använder, använd kommandot which, dvs which ssh; which kinit; which klist.

  • /usr/bin – macOS standard-katalog, default för inbyggda och medföljande applikationer.
  • /usr/local/bin eller /opt/homebrew/bin – standard-katalog för HomeBrew (Intel/Rosetta 2 respektive Apple Silicon-binärer, se deras Homebrew dokumentation (docs.brew.sh) ).
  • /opt/local/bin – standard-katalog för MacPorts (se deras Mac Ports dokumentation (trac.macports.org) ).
  • /Users/username/«conda-version»/bin – katalog för Conda, installerat med Anaconda, Miniconda, Miniforge etc. Normalt ändras din prompt till (base) ~% eller liknande, för att visa att miljön "base" är aktiv. Använd conda info --envs för att kontrollera eller conda deactivate för att lämna miljön.
  • Python venv / virtualenv – ersätter sällan systemets program, men kan påverka hur de fungerar. Använd echo $VIRTUAL_ENV för att se ifall en miljö är aktiv, och deactivate för att lämna den.

Versionerna är i stort sett likvärdiga, men kan implementera olika funktioner eller ha olika kommandoradsväljare. T.ex. finns vissa skillnader mellan Heimdal Kerberos (inklusive macOS) och MIT Kerberos, men endera kan används för kerberiserad SSH.

Observera att tredjepartsprogramvara inte uppdateras av macOS. Du måste själv ställa in automatiska uppdateringar i pakethanteraren, eller uppgradera manuellt.

Trasig ticket-cache – KCM:501 eller KRB5CCNAME

Vissa Kerberos-klienter använder en KCM–demon istället för macOS standard API-ticketcache. Om klist visar

    Ticket cache: KCM:501

istället för

    Credentials cache: API:E336F6A4-34B6-7514-F687-06D434B494B5

använd kdestroy -c KCM:501; /usb/bin/kinit -f … för att radera den cache:n och hämta nya biljetter med standard-kinit.

MIT Kerberos (web.mit.edu)  har mer information om olika typer av ticket-cache.

Använd FQDN (fullständigt namn) om du har stängt av reverse DNS lookup

Om din inloggning blockeras med Permission denied trots att du valt rätt server etc., försök använda serverns FQDN istället för ett alias. Alltså, student-shell-1.sys.kth.se istället för student-shell.sys.kth.se.

Du kan med klist -f se vilket namn som användes, från principalens namn i host/-biljetten. Notera att detta är en API:–ticket-cache, från macOS standard-version av kinit. Inte en version från brew, Conda, etc.

Credentials cache: API:DB307205-3B98-2220-F511-3D64B33EA697
        Principal: username@KTH.SE

  Issued                Expires             Flags    Principal
Aug 18 10:40:42 2025  Aug 19 10:40:39 2025  FIA    krbtgt/KTH.SE@KTH.SE
Aug 18 10:42:08 2025  Aug 19 10:40:39 2025  FA     host/student-shell.sys.kth.se@KTH.SE

Ifall FQDN används, ska sista raden istället vara

Aug 18 10:42:08 2025  Aug 19 10:40:39 2025 FA host/student-shell-1.sys.kth.se@KTH.SE

(Det går att ändra Kerberos inställning för rdns, eller ssh_config:s inställningar för Match och Canonical∗/Canonicalize∗, för att kunna använda DNS-alias. Men det kan påverka andra applikationer, och är mer komplicerat än att bara använda FQDN.)