Mit dem Add Targets Wizard liefert der Oracle Enterprise Manager Cloud Control 12c eine einfache Möglichkeit über die GUI Konsole diverse Ziele, also neben „normalen“ Hosts, Datenbanken, Listener und ASM auch Exadatas und Middleware und Cluster Services uvm. zur Überwachung, mit mal mehr und mal weniger Konfigurationsmöglichkeiten verfügbar zu machen. Will man über den „Add Host Targets“ Wizard aber erstmal nur einen einfachen Server einbinden, wird auf diesem zunächst ein sogenannter Agent benötigt. Also eine Applikation die auf dem Host selbst die entsprechende Überwachung übernimmt und mit dem Enterprise Manager kommuniziert.
Zur Bereitstellung des Agents braucht es zunächst die Agent Software. Diese erhalten Sie entgegen früheren Versionen nur noch über den Self Update Service des Enterprise Managers. Wählen Sie die notwendige OS Plattform und laden Sie die Software. In unserem Fall für Agent Software (12.1.0.3) for Microsoft Windows x64 (64-bit). Diese funktioniert sowohl für Windows Server 2008 als auch Windows Server 2012.
Setup > Extensibility > Self Update > Agent Software
Wer der GUI nicht traut, kann über Kommandozeile die verfügbaren Agents abfragen:
$OMS_HOME/bin/emcli login -username=sysman -password=****** Login successful $OMS_HOME/bin/emcli get_supported_platforms ———————————————– Version = 12.1.0.3.0 Platform = Linux x86-64 ———————————————– Version = 12.1.0.3.0 Platform = Microsoft Windows x64 (64-bit) ———————————————– Platforms list displayed successfully.
Jetzt kommt der entscheidende Scheideweg. Zum ausrollen der Agent Software über den „Add Host Targets“ Wizard auf den Zielhost benötigen Sie auch unter Windows einen SSH-Zugriff auf die Maschine, andernfalls erhalten Sie beim Versuch den Agent zu installieren einen Fehler: SSH server check failed – SSH daemon (sshd) is not running on port „22“.
Alternativ gibt es die Möglichkeit ein Agent Image über die Kommandozeile zu erstellen, welches Sie dann auf dem Zielhost direkt installieren. Damit umgehen Sie die Notwendigkeit einen SSH-Zugriff über Cygwin bereitzustellen. Für eine einzelne Version und ein paar wenige Windows Maschinen ist das sicherlich noch händelbar. Sobald Sie aber diverse Maschinen haben wird es schwieriger, zudem müssen Sie für jede neue Agent oder OS Version ein neues Paket schnüren und wieder einzeln installieren, der Aufwand multipliziert sich. Da erscheint die Möglichkeit über Cygwin einen gesicherten SSH-Zugriff auf die Windows-Maschine zu implementieren zukunftssicherer und praktikabler. Es ist auch keineswegs so, dass mit Cygwin ein offener SSH oder wie auch immer gearteter freier Zugriff auf die Windows-Maschine eingerichtet wird. Es werden nicht alle Sicherheitskonfigurationen ausgehebelt wie mancher gerne behauptet. Nur die notwendigsten Cygwin-Pakete werden installiert und sie können den SSH-Zugriff auf einen einzelnen Domänen-User (Oracle DBA) Passwort-gesichert beschränken. Zudem ist die Verwendung von Cygwin mit dem Add Host Targets Wizard von Oracle zertifiziert und supported (Ref.: https://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC151).
Falls Sie dennoch nicht mit Cygwin warm werden wollen, finden Sie eine Anleitung für eine Agent Installation ohne Cygwin in folgendem Blog: OEM 12c Agent deploy auf Windows – ohne Cygwin auch kein Problem.
Für alle anderen geht es zunächst mit der Cygwin Installation weiter.
Cygwin Installation
Das Pre-Installation Package finden Sie hier: https://cygwin.com/install.html (in meinem Fall setup-x86_64.exe)
Bevor Sie den SSH Zugriff über Cygwin einrichten müssen Sie sicherstellen dass es zu keinen Konflikten mit eventuell bereits installierten SSH-Services kommt. Oracle gibt hier explizit OpenSSH und MKSNT als SSH-Services an, welche gestoppt werden und aus der PATH-Variablen gelöscht werden müssen – diese Einschränkung gilt natürlich auch für andere Services die den SSH-Port 22 belegen oder blockieren sollten – Stichwort: Firewall.
Für die Installation und das erstmalige Einrichten benötigen Sie administrative Berechtigungen.
Die Installations-Files kann man später aus dem Download-Ordner entnehmen und zum nächsten Server schieben. So muss man nicht jedesmal neu herunterladen, dazu wählt man beim nächsten Server „Install from Local Directory“ und wählt die zuvor abgelegten Dateien aus.
C:\cygwin !
Ganz wichtig: Als Root Directory sollten Sie C:\cygwin wählen. Der Standardpfad für den Enterprise Manager ist auf C:\cygwin gesetzt. Andernfalls können Sie die Pfade in $OMS_HOME/oui/prov/resources/ssPaths_msplats.properties anpassen. Generell SSH_PATH, SCP_PATH, MKDIR_PATH, SH_PATH, CHMOD_PATH und TRUE. Bedenken Sie aber, dass Sie bspw. ein D: -Laufwerk auf allen Maschinen bereitstellen müssen, sonst müssen Sie hier immer wieder anpassen.
Bei den Packages angekommen, wählen Sie nur nachfolgende Pakete aus:
Admin > cygrunsrv
Archive > unzip + zip
Net > openssh + openssl
Alle zusätzlich notwendigen Pakete mit installieren lassen.
Fertig.
Cygwin Konfiguration
Editieren Sie die C:\cygwin\cygwin.bat und fügen folgende Codzeile zwischen chdir … und bash … ein:
set CYGWIN=binmode ntsec
Code ergänzen cygwin.bat:
Überprüfen Sie ob die Installation korrekt ausgeführt wurde:
C:\cygwin\cygwin.bat „Als Administrator“ ausführen und folgendes Kommando absetzen
cygrunsrv -h
Die Hilfe sollte angezeigt werden. Falls es hier ein Problem gibt, bleibt nur die erneute Installation.
Weiter geht es mit der SSH-Konfiguration.
ssh-host-config
*** Query: Overwrite existing /etc/ssh_config file? (yes/no) yes *** Query: Should StrictModes be used? (yes/no) yes *** Query: Should privilege separation be used? (yes/no) yes *** Query: new local account ’sshd‘? (yes/no) yes *** Query: Do you want to install sshd as a service? *** Query: (Say „no“ if it is already installed as a service) (yes/no) yes *** Query: Enter the value of CYGWIN for the daemon: [] binmode ntsec *** Query: Do you want to use a different name? (yes/no) no *** Query: Create new privileged user account ‚cyg_server‘? (yes/no) yes *** Query: Please enter the password: ****** *** Query: Reenter: ******
Nach Eingabe von cyrunsrv –S sshd sollte der Service starten.
Weiter geht es mit der Konfiguration des Users, der letztlich über SSH auf die Maschine zugreifen soll. Dessen Anmeldedaten werden später im Enterprise Manager hinterlegt. Also sollte der Zugriff vom OEM-Server aus möglich sein.
Hier habe ich es mir einfach gemacht und die Installation direkt mit meinen Domänen Oracle DBA User mit administrativen Zugriffsrechten vorgenommen. Somit ist dieser User bereits hinterlegt. Falls Sie einen anderen Domänenbenutzer hinzufügen möchten geben Sie folgenden Code in der Cygwin Kommmandozeile ein:
/bin/mkpasswd -d -u oracle_dba >> /etc/passwd mkdir -p /home/oracle_dba chown oracle_dba /home/oracle_dba
Für einen lokalen User –l statt –d.
An dieser Stelle könnten Sie auch die /etc/passwd bearbeiten und alle überflüssigen User löschen und so den Zugriff auf Cygwin entsprechend beschränken. Dazu sichern sie zunächst die Datei C:\cygwin\etc\passwd und können diese dann direkt bearbeiten oder über Cygwin-Kommandozeile mit vi /etc/passwd.
In jedem Fall müssen Sie folgenden Code absetzen:
chown oracle_dba /var/log/sshd.log chown -R oracle_dba /var/empty chown oracle_dba /etc/ssh* chmod 755 /var/empty chmod 644 /var/log/sshd.log
Je nach Version existiert die sshd.log nicht, was zu vernachlässigen ist.
Nachdem Sie die C:\cygwin\etc\sshd_config gesichert haben müssen Sie als letzten Schritt noch am Ende der sshd_config folgende Zeile ergänzen:
KexAlgorithms diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
Tipp: Die Datei ist mit WordPad deutlich besser lesbar als mit Notepad.
Ändern Sie abschließend den Log On für den CYGWIN sshd Service entsprechend Ihrem Zugriffsbenutzer. Services.msc > CYGWIN sshd > Properties (Eigenschaften) > Log On
Wenn der Service ordnungsgemäß startet können Sie auf dem OEM-Server direkt den Zugriff testen:
oracle@oem12c[DBOEM12C]% ssh -l oracle_dba flowers ‚date‘ oracle_dba@flowers’s password: Fri Dec 12 23:34:56 WEST 2014
Nach der Passwort-Abfrage sollte das Datum angezeigt werden. Der SSH-Zugriff funktioniert!
Agent Deploy
Jetzt geht es zum eigentlichen Agent Deploy.
Setup > Add Target > Add Targets Manually > Add Host Targets > Add Host …
Host und Plattform angeben > Next
WICHTIG: Hier kommt es auf die Named Credentials an. Es wird nach Groß- und Kleinschreibung unterschieden. Die Anmeldedaten müssen 1:1 wie in der passwd (C:\cygwin\etc\passwd) hinterlegt werden. Das Installation Base Directory können Sie frei wählen und das Instance Directory wird angehängt.
Deploy Agent
Glückwunsch!
Cygwin vollständig deinstallieren
Zum Schluss noch die Rolle rückwärts. Wenn Sie Cygwin wieder entfernen wollen, starten Sie zunächst die setup.exe. Durchlaufen Sie dieses bis zur Paketauswahl und klicken neben All solange, bis Uninstall erscheint, Next, Next, Finish.
Leider bleibt hiernach noch ein Rest Daten übrig. Dazu folgende Befehle im Command absetzen:
C:\> takeown /f C:\cygwin /r /d y C:\> icacls C:\cygwin /t /grant everyone:F C:\> sc \\localhost delete sshd
Jetzt können Sie das Cygwin Verzeichnis löschen. Es bleiben noch die Lokalen Benutzer cyg_server und sshd sowie Registry-Einträge unter HKEY_CURRENT_USER\Software\Cygwin und HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin, welche Sie bedenkenlos löschen können.