Linux-Client keine Verbindung vom Server mittels PublicKey-Verfahren

Hallo Patrick,

mach mal bitte folgendes:

  1. die master1 Zeile in der
    /etc/linuxmuster/sophohmorix/default-school/devices.csv
    auskommentieren mit einem # am Anfang der Zeile.
  2. linuxmuster-import-devices
  3. die Auskommentierung wieder wegnehmen und den Rechnernamen von
    „master1“ zu „vorlagenrechner“ verändern
  4. linuxmuster-import-devices
  5. schauen ob es eine .cloop.macct Datei gibt in /srv/linbo
    falls ja: diese löschen
  6. Rechner syncen und dann kontrollieren ob der Rechner name in
    /etc/hosts und /etc/hostname stimmt
  7. die Datei /etc/kbr5.keytab löschen
  8. linuxmuster-client-adsso ausführen in einem Terminal auf dem Client
    mit sudo

LG

Holger

Hi Holger,
bevor ich jetzt was falsch mach, ich hab mich auf dem Client angemeldet, aber den turnkey noch nicht ausgeführt und bin bei Punkt 6.

Zu den Serverdateien:
hosts sieht so aus:

root@server:/etc# cat hosts
# modified by linuxmuster-prepare at 20201006070925
# /etc/hosts
#
# thomas@linuxmuster.net
# 20160902
#

127.0.0.1       localhost
10.0.0.1        server.linuxmuster.lan        server

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

und hostname sieht so aus:

root@server:/etc# cat hostname
server.linuxmuster.lan

Ich denke, das stimmt alles.

Bei 8. wird behauptet, dass es den Befehl nicht gibt, linuxmuster-client-adsso-setup könnte ich anbieten …

linuxadmin@vorlagenrechner:~$ sudo linuxmuster-client-adsso
[sudo] Passwort für linuxadmin:
sudo: linuxmuster-client-adsso: Befehl nicht gefunden

Mit Setup lande ich bei derselben Meldung wie vorher, nur halt jetzt mit nem anderen Rechnernamen …

Restarting services:

#### Joining domain LINUXMUSTER.
#### Note that you have to input the password of the global-admin.

Passwort für global-admin@LINUXMUSTER.LAN: 
Using short domain name -- LINUXMUSTER
Joined 'VORLAGENRECHNER' to dns domain 'linuxmuster.lan'

Installing server certificate ... mount error(2): No such file or directory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
cp: Aufruf von stat für '/var/lib/samba/sysvol/linuxmuster.lan/tls/cacert.pem' nicht möglich: Datei oder Verzeichnis nicht gefunden
umount: /var/lib/samba/sysvol: nicht eingehängt.
Failed!
(pam_mount.c:133): clean system authtok=0x564ecdbff0e0 (1073741824)

Es gibt weder ein .cloop.macct noch die Date kbr5.keytab.
LG Patrick

Hallo Patrick,

Zu den Serverdateien:
hosts sieht so aus:

root@server:/etc# cat hosts # modified by linuxmuster-prepare at
20201006070925 # /etc/hosts # # thomas@linuxmuster.net # 20160902 #
127.0.0.1 localhost 10.0.0.1 server.linuxmuster.lan server # The
following lines are desirable for IPv6 capable hosts ::1 localhost
ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters |

und hostname sieht so aus:

root@server:/etc# cat hostname server.linuxmuster.lan |

Ich denke, das stimmt alles.

die Dateien vom Client sind aber die interessanten.

Bei 8. wird behauptet, dass es den Befehl nicht gibt,
linuxmuster-client-adsso-setup könnte ich anbieten …

linuxadmin@vorlagenrechner:~$ sudo linuxmuster-client-adsso [sudo]
Passwort für linuxadmin: sudo: linuxmuster-client-adsso: Befehl nicht
gefunden |

Mit Setup lande ich bei derselben Meldung wie vorher, nur halt jetzt mit
nem anderen Rechnernamen …

Restarting services: #### Joining domain LINUXMUSTER. #### Note that
you have to input the password of the global-admin. Passwort für
global-admin@LINUXMUSTER.LAN: Using short domain name – LINUXMUSTER
Joined ‚VORLAGENRECHNER‘ to dns domain ‚linuxmuster.lan‘ Installing
server certificate … mount error(2): No such file or directory Refer
to the mount.cifs(8) manual page (e.g. man mount.cifs) cp: Aufruf von
stat für ‚/var/lib/samba/sysvol/linuxmuster.lan/tls/cacert.pem‘ nicht
möglich: Datei oder Verzeichnis nicht gefunden umount:
/var/lib/samba/sysvol: nicht eingehängt. Failed! (pam_mount.c:133):
clean system authtok=0x564ecdbff0e0 (1073741824) |

OK: es hängt woanders (auf dem Server, nehme ich an).

… ich denk mal ein wenig nach …

LG

Holger

1 „Gefällt mir“

Hi Holger,

ich hab unserem Server einen anderen Namen als server gegeben und diesen Namen bisher in den Posts immer auf den Standard zurückgesetzt, damit das für alle Nutzer generisch bleibt.

Auf dem Client stand in der /etc/hosts aber 10.0.0.1 server.linuxmuster.lan, anstatt dem eigenen Namen. Nach der Änderung hats getan! Yeah!
Mann das war eine schwere Geburt. Tausend Dank für deine Leidensbereitschaft!

Hab ich da was in der Installation übersehen oder ist das noch ein Fehler irgendwo, dass da der falsche Name übertragen wurde?

Liebe Grüße und VIELEN VIELEN DANK!!!
Patrick

Hallo Patrick,

Hab ich da was in der Installation übersehen oder ist das noch ein
Fehler irgendwo, dass da der falsche Name übertragen wurde?

die /etc/hosts wird im postsync gepatched.

Schau mal auf dem Server in die Datei
/srv/linbo/linuxmuster-client/bionic/common/etc/hosts

Was steht das?
Wahrscheinlich ein Platzhalter.
Dann schau in die Datei /srv/linbo/.cloop.postsync
Da steht eine sed Zeile in der der Platzhalter in der hosts ersetzt
wird: was steht da?

LG

Holger

/etc/hosts

# /etc/hosts
# Diese Datei wird per postsync gepatcht. 
# Pfad: ${linbodir}/${postsyncdir}/${patchclass}/common/etc/hosts -> /mnt/etc/hosts in LINBO

########## DO NOT EDIT START
# HOSTNAME wird im Postsyncskript mit dem echten Namen gepatcht
127.0.0.1 localhost
127.0.0.1 HOSTNAME.linuxmuster.lan HOSTNAME

#Die nächste Zeile enthält die Hostnamen so, wie sie auf dem Server eingetragen sind...
10.0.0.1 server.linuxmuster.lan server

## damit CUPS zufrieden ist, muss noch diese Zeile hier dazu:
10.0.0.1  server.lokal server.local
########## DO NOT EDIT END

und hier die .postsync:

echo "##### POSTSYNC BEGIN #####" 
LOG=/mnt/var/log/postsync.log
export LOG
echo "##### POSTSYNC BEGIN #####" >  $LOG
NOW=$(date +%Y%m%d-%H%M)
export NOW
echo $NOW | tee -a $LOG

# IP-Adresse des Servers
SERVERIP=$(nslookup dummy 2> /dev/null | head -n 1 | awk -F: '{print $2}' | sed "s/\s*//g")
export SERVERIP

# Die Hostgruppe des aktuellen Rechners
HOSTGROUP=$(hostgroup)
export HOSTGROUP

# Raum feststellen. Dieses Skript geht davon aus
# dass die Rechner Namen der Form
# raumname-hostname haben, also z.B. cr01-pc18
RAUM=${HOSTNAME%%-*}
# wenn der string leer ist, raum auf unknown setzen
if [ "x${RAUM}" == "x" ]; then 
    RAUM="unknown"
fi
export RAUM

# UVZ für die Patches auf dem Server. Mit dieser Variablen 
# kann man verschiedene Patches, z.B. für unterschiedliche
# Linux-Versionen bereitstellen.
# Wenn man hier $HOSTGROUP einträgt, erhält jede Rechnerklasse 
# ein eigenes Patchklassenverzeichnis auf dem Server.
# Damit kann man verschiedene Patchklassen mit derselben cloop-Datei
# bedienen, wenn man das benötigt.
PATCHCLASS="ubuntu_vanilla"
export PATCHCLASS

# Das Verzeichnis, in dem die Serverpatches
# im lokalen Clientcache synchronisiert werden.
PATCHCACHE=/linuxmuster-client/serverpatches
export PATCHCACHE

echo "" | tee -a $LOG
echo "Hostname:      ${HOSTNAME}" | tee -a $LOG
echo "Raum:          ${RAUM}" | tee -a $LOG
echo "Patchcache:    ${PATCHCACHE}" | tee -a $LOG
echo "Hostgruppe:    ${HOSTGROUP}"   | tee -a $LOG
echo "Patchclass:    ${PATCHCLASS}" | tee -a $LOG
echo "" | tee -a $LOG

# -----------------------------------------
# Patchdateien auf das lokale Image rsyncen
# ----------------------------------------- 
echo " - getting patchfiles" | tee -a $LOG

# RAUM     -> Raumname
# HOSTNAME -> Rechnername
# Verzeichnis anlegen, damit es sicher existiert
mkdir -p /cache/${PATCHCACHE}
rsync --delete --progress --exclude "- *~" -lr "${SERVERIP}::linbo/linuxmuster-client/${PATCHCLASS}" "/cache/${PATCHCACHE}" | tee -a $LOG

echo " - patching local files"  | tee -a $LOG

# common: Bekommen alle clients der Patchklasse
# files
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/common ]; then 
    echo "   - patching common to /mnt" | tee -a $LOG
      ## copy all files in common/*
      cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/common/* /mnt/ | tee -a $LOG
      ## rsync (with delete) all postsync.d-files
      rsync --delete -lr /cache/${PATCHCACHE}/${PATCHCLASS}/common/postsync.d/ /mnt/postsync.d/ | tee -a $LOG
fi

# tarpacks
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/common/tarpacks ]; then
  echo "   - unpacking tarpacks from common/tarpacks to /mnt" | tee -a $LOG
  for pack in /cache/${PATCHCACHE}/${PATCHCLASS}/common/tarpacks/*; do
     echo "     - unpacking: $pack" | tee -a $LOG
     tar xvzf $pack -C /mnt | tee -a $LOG
  done
fi

# Raum: Nur die Clients des Raums
# files
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM} ]; then 
    echo "   - patching ${RAUM} to /mnt" | tee -a $LOG
    cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM}/* /mnt/ | tee -a $LOG
fi

# tarpacks
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM}/tarpacks ]; then
  echo "   - unpacking tarpacks from ${RAUM}/tarpacks to /mnt" | tee -a $LOG
  for pack in /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM}/tarpacks/*; do
     echo "     - unpacking: $pack" | tee -a $LOG
     tar xvzf $pack -C /mnt | tee -a $LOG
  done
fi

# Host: Nur der Rechner
# files
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME} ]; then 
    echo "   - patching ${HOSTNAME} to /mnt"  | tee -a $LOG
    cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME}/* /mnt/ | tee -a $LOG
fi

# tarpacks
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME}/tarpacks ]; then
  echo "   - unpacking tarpacks from ${HOSTNAME}/tarpacks to /mnt" | tee -a $LOG   
  for pack in /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME}/tarpacks/*; do
     echo "     - unpacking: $pack" | tee -a $LOG
     tar xvzf $pack -C /mnt | tee -a $LOG
  done
fi

# Hook, um eigene Skripte auszuführen
if [ -d /mnt/postsync.d ]; then
    for SCRIPT in /mnt/postsync.d/*[^~]
    do
        chmod 755 $SCRIPT
        echo "Executing: $SCRIPT" | tee -a $LOG
        #$SCRIPT > /dev/null 2>&1
        . $SCRIPT | tee -a $LOG
        echo " ...done." | tee -a $LOG
    done
    rm -rf /mnt/postsync.d
fi

# wenn es /mnt/tarpacks gibt - löschen
rm -rf /mnt/tarpacks

# Zeitstempel letzter sync hinterlegen
echo $NOW > /mnt/.lastsync
# Hostgroup hinterlegen
echo ${HOSTGROUP} > /mnt/.hostgroup
# /mnt/.linbo wurde von Linbo hinterlegt
image=$(cat /mnt/.linbo)
# Image Beschreibung hinterlegen
cp /cache/${image}.cloop.desc /mnt/.description

echo "##### POSTSYNC END #####" | tee -a $LOG

Hallo Patrick,

Auf dem Client stand in der |/etc/hosts| aber |10.0.0.1
server.linuxmuster.lan|, anstatt dem eigenen Namen. Nach der Änderung
hats getan! Yeah!
Mann das war eine schwere Geburt. Tausend Dank für deine
Leidensbereitschaft!

bitte schick mir mal die /etc/hosts vom Cleint nach einem frischen sync:
ich muss die mal sehen.
und dann noch die gleiche Datei, wie du sie verändert hast (wie sie dann
also funktionienrte).

LG

Holger

Hi Holger,
Vorher:

# /etc/hosts
# Diese Datei wird per postsync gepatcht. 
# Pfad: ${linbodir}/${postsyncdir}/${patchclass}/common/etc/hosts -> /mnt/etc/hosts in LINBO

########## DO NOT EDIT START
# HOSTNAME wird im Postsyncskript mit dem echten Namen gepatcht
127.0.0.1 localhost
127.0.0.1 HOSTNAME.linuxmuster.lan HOSTNAME

#Die nächste Zeile enthält die Hostnamen so, wie sie auf dem Server eingetragen sind...
10.0.0.1 server.linuxmuster.lan server

## damit CUPS zufrieden ist, muss noch diese Zeile hier dazu:
10.0.0.1  server.lokal server.local
########## DO NOT EDIT END

Nachher:

# /etc/hosts
# Diese Datei wird per postsync gepatcht. 
# Pfad: ${linbodir}/${postsyncdir}/${patchclass}/common/etc/hosts -> /mnt/etc/hosts in LINBO

########## DO NOT EDIT START
# HOSTNAME wird im Postsyncskript mit dem echten Namen gepatcht
127.0.0.1 localhost
127.0.0.1 HOSTNAME.linuxmuster.lan HOSTNAME

#Die nächste Zeile enthält die Hostnamen so, wie sie auf dem Server eingetragen sind...
10.0.0.1 snowden.linuxmuster.lan server

## damit CUPS zufrieden ist, muss noch diese Zeile hier dazu:
10.0.0.1  server.lokal server.local
########## DO NOT EDIT END

(Wie gesagt, damals hieß der Server noch snowden und nicht server.)

Hallo Patrick,

beidemale wird HOSTNAME nicht korrekt gepatched.

Das sollte so natürlich nicht sein.

LG

Holger