Autor: mediamill

  • SSH Host Key aus der Datei known_hosts entfernen

    Wenn eine SSH-Verbindung zu einem Server aufgebaut werden soll und der Host Key des Zielservers nicht mit dem Host Key für diesen Server in der lokalen Datei known_hosts übereinstimmt, wird aus Sicherheitsgründen keine Verbindung aufgebaut, da die Identität des Zielservers nicht eindeutig sichergestellt ist.

    Beispielhafte Fehlermeldung:

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    The RSA host key for server.server.test has changed,
    and the key for the corresponding IP address 88.188.188.88
    is unchanged. This could either mean that
    DNS SPOOFING is happening or the IP address for the host
    and its host key have changed at the same time.
    Offending key for IP in /root/.ssh/known_hosts:13
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that a host key has just been changed.
    The fingerprint for the RSA key sent by the remote host is
    88:88:88:01:7f:f9:19:73:53:79:dd:a5:ac:88:88:88.
    Please contact your system administrator.
    Add correct host key in /root/.ssh/known_hosts to get rid of this message.
    Offending RSA key in /root/.ssh/known_hosts:12
    RSA host key for server.server.test has changed and you have requested strict checking.
    Host key verification failed.

    Wenn man die Gründe kennt, warum der Host Key des entfernten Servers nicht mit dem lokal gespeicherten Host Key übereinstimmt, dann kann man den lokalen Host Key aus der Datei known_hosts entfernen.

    Bei älteren Linux-Systemen konnte man einfach den Key manuell aus der Datei known_hosts entfernen, da der Servername in Klartext den Key identifizierte. Da bei neueren Systemen aus Sicherheitsgründen der Servername verschlüsselt ist, geht ein manuelles Löschen des Host Key nicht mehr. Man muss nun den Host Key mit dem Programm ssh-keygen und dem Parameter -R und dem Servernamen für den Server, dessen Host Key entfernt werden soll, aus der Datei known_hosts entfernen.

    Beispiel:

    ssh-keygen -R server.server.test

    Nach dem Entfernen des Host Key aus der Datei known_hosts wird man bei einem erneuten SSH-Verbindungsaufbau gefragt, ob man dem Zielserver vertraut. Wenn diese Frage mit „ja“ beantwortet wird, dann wird der aktuelle Host Key des Remoteservers der Datei known_hosts hinzugefügt.

    Beispiel:

    The authenticity of host 'server.server.test (88.188.141.88)' can't be established.
    RSA key fingerprint is 88:88:88:01:7f:f9:19:73:53:79:dd:a5:ac:88:88:88.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'server.server.test' (RSA) to the list of known hosts.

    Zukünftige SSH-Verbindungen zu dem Zielserver sollten dann ohne Sicherheitsabfrage funktionieren.

    Quelle: http://www.linuxforme.de

  • Verwenden von Word 2013 als Editor für einen SharePoint Blog

    Neben dem in einem vorherigen Blogartikel vorgestellten Windows Live Writer kann man auch Microsoft Word 2013 als Editor für seine SharePoint-Blogeinträge verwenden.

    Um jetzt Word 2013 mit seinem SharePoint-Blog zu verbinden, klickt man in seinem Blog in dem Blogtools-Menü auf den Eintrag Blogging-App starten.

    image

    Danach öffnet sich Word 2013 und man muss noch das Anlegen eines neuen Blogkontos bestätigen.

    image

     

    Nach dem Anlegen des Blogkontos für den SharePoint-Blog kann man Word für die Erstellung und die Bearbeitung von Blogeinträgen verwenden.

    image

    Wie auch beim Windows Live Writer kann man Word 2013 dazu verwenden, Beiträge für mehrere Blogs gleichzeitig zu veröffentlichen. Dazu kann man z. B. einen WordPress-Blog über die Option Konten Verwalten / Neu als Zielplattform hinzufügen.

    image

    Bei der Konfiguration für einen WordPress-Blog muss man nur die Blog-URL, den Benutzernamen und das Kennwort angeben. Alle weiteren Einstellungen werden von Word 2013 automatisch konfiguriert.

     

    image

  • Verwendung des Windows Live Writer Editor für SharePoint 2013-Blogs

    SharePoint 2013 bietet eine Website-Vorlage, mit der sich ein einfacher Blog realisieren lässt. Die Funktionalitäten eines SharePoint-Blogs bleiben aber weit hinter denen von z. B. WordPress zurück. Um wenigstens das Editieren von Blogbeiträgen etwas komfortabler zu gestalten, kann man den Windows Live Writer Editor von Microsoft als Editor für die Erstellung seiner Blogbeiträge verwenden.

    Der Windows Live Writer ist Bestandteil der kostenlosen Windows Essentials von Microsoft.

    Mit dem Windows Live Writer ist es unter anderem auch möglich, einen Blogbeitrag gleich für mehrere unterschiedliche Blogs zu erstellen. Beispielsweise kann man einen Blogbeitrag gleichzeitig für SharePoint und für einen WordPress-Blog zur Verfügung stellen.

    Hier ein Screenshot von dem Windows Live Writer, mit dem dieser Artikel erstellt wurde:

     

    image

    Eine der wichtigsten Erleichterungen beim Erstellen von SharePoint-Blogbeiträgen durch den Windows Live Writer ist die Funktionalität, Bilder direkt aus der Zwischenablage in den Blog einfügen zu können, ohne das Bild vorher hochzuladen.

  • Konfiguration der SharePoint 2013-Funktionalität „Zugriffsanforderungen“

    ​SharePoint 2013 bietet eine Funktion, die es Benutzern ohne ausreichende Zugriffrechte auf eine SharePoint-Webseite erlaubt, eine Anfrage zu senden, um Zugriff für diese Website zu beantragen.

    Zugriffsanforderung auf eine SharePoint Website durch einen Benutzer
    Zugriffsanforderung auf eine SharePoint-Website durch einen Benutzer

    Wenn diese Funktion aktiviert ist, dann ist als Standard eine Platzhalter-E-Mail-Adresse someone@example.com als Ziel für die Anfrage konfiguriert. Ändert man diese E-Mail-Adresse nicht auf einen gültigen Wert, bekommen die Anfragenden eine Fehlermeldung, dass die Mail nicht zugestellt werden kann.

    Um diese Funktion zu konfigurieren, muss der Besitzer der SharePoint-Website-Sammlung die Einstellungen für die Website-Berechtigungen aufrufen.

    Aufrufen des Konfigurationsmenüs von SharePoint 2013
    Aufrufen des Konfigurationsmenüs

     

    Aufrufen der Websiteeinstellungen einer SharePoint Website
    Aufrufen der Websiteeinstellungen

     

    Aufrufen des  "Websiteberechtigungen" - Dialogs einer SharePoint 2013 Website
    Aufrufen des „Websiteberechtigungen“-Dialogs
    Aufrufen der Einstellungen für Zugriffsanforderungen bei SharePoint 2013
    Aufrufen der Einstellungen für Zugriffsanforderungen
    Konfiguration der E-Mail Adresse für die Zugriffsanforderungen auf eine SharePoint 2013 Website
    Konfiguration der E-Mail-Adresse für die Zugriffsanforderungen auf eine SharePoint 2013-Website

    In den Einstellungen für die Zugriffsanforderungen auf eine SharePoint 2013-Website kann man nun die gewünschte E-Mail-Adresse des Empfängers der Zugriffsanforderungen konfigurieren. Hier lässt sich aber auch das Feature „Zugriffsanforderungen“ deaktivieren, in dem man die Option „Zugriffsanforderungen zulassen“ deaktiviert.

    Dann bekommt ein Benutzer ohne Zugriffsrechte auf eine SharePoint-Website nur einen Hinweis. Eine Zugriffsanforderungsanfrage kann er dann nicht stellen.

     

    Fehlermeldung bei nicht ausreichenden Zugriffrechten auf eine SharePoint 2013 Website
    Fehlermeldung bei nicht ausreichenden Zugriffsrechten auf eine SharePoint 2013-Website

     

  • mysqldump / AutoMySQLBackup Warning: Skipping the data of table mysql.event. Specify the –events option explicitly

    Nach einem Update auf MySQL 5.5.3, taucht in den Logs der Datenbank-Backups folgende Warnung auf:

    -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly

    Unter mysql-and-warnings-yet-another wird ausführlich auf die Problematik eingegangen.

    Damit man diese Fehlermeldung wieder los wird, hat man folgende Optionen:

    • –events als Parameter dem mysqldump Befehl hinzufügen.  –> Die Warnung  verschwindet, da nun die Event-Tabelle explizit gesichert wird.
    • –ignore-table=mysql.event als Parameter dem mysqldump Befehl hinzufügen. –> Die Warnung verschwindet, da nun die Event-Tabelle explizit NICHT gesichert wird.

    Wenn man das Backup-Script AutoMySQLBackup (Bugreport) einsetzt, findet man im Script folgende Zeile, in der man die gewünschte Option einfügen kann:

    OPT="--quote-names --opt --single-transaction" # OPT string for use with mysqldump ( see man mysqldump )

    Wenn die Event-Tabelle gesichert werden soll:

    OPT="--quote-names --opt --single-transaction --events" # OPT string for use with mysqldump ( see man mysqldump )

    Oder wenn die Event-Tabelle NICHT gesichert werden soll:

    OPT="--quote-names --opt --single-transaction --ignore-table=mysql.event" # OPT string for use with mysqldump ( see man mysqldump )
  • Aktivieren des Bash-Completion-Features auf einem Debian-System

    Wenn das Bash-Completion-Feature auf Debian-Systemen richtig funktioniert, kann man z. B. die Dienste beim Service-Kommando mit der Tabulatortaste vervollständigen.

    Beispiel für die Befehlsvervollständigung:

    service ap<Tab>
    service apache2 rel<Tab>
    service apache2 reload

    Wenn auf einem Debian-System die Vervollständigung von Befehlen mittels der Tabulatortaste nicht funktioniert, kann es sein, dass das Paket Bash-Completion nicht installiert ist.

    Um zu überprüfen, ob das Bash-Completion-Paket installiert ist, kann man folgenden Befehl benutzen:

    dpkg -l bash-completion | tail -1

    Die Ausgabe des Befehls sollte dann wie folgt aussehen:

    ii  bash-completion 1:2.0-1 all programmable completion for the bash shell

    Bleibt diese Ausgabe leer, dann ist das Paket Bash-Completion nicht installiert. Es lässt sich mit folgendem Befehl installieren:

    apt-get install bash-completion

    Sollte die Bash-Vervollständigung trotz installiertem Paket Bash-Completion nicht funktionieren, kann es daran liegen, dass das Vervollständigungs-Feature noch nicht aktiviert wurde. Bei Debian kann man diese Funktion in der Datei /etc/bash.bashrc aktivieren. Man muss nur die Kommentarzeichen vor folgenden Zeilen entfernen:

    ###Vorher
    #if ! shopt -oq posix; then
    #  if [ -f /usr/share/bash-completion/bash_completion ]; then
    #    . /usr/share/bash-completion/bash_completion
    #  elif [ -f /etc/bash_completion ]; then
    #    . /etc/bash_completion
    #  fi
    #fi
    
    ###Nachher
    if ! shopt -oq posix; then
      if [ -f /usr/share/bash-completion/bash_completion ]; then
        . /usr/share/bash-completion/bash_completion
      elif [ -f /etc/bash_completion ]; then
        . /etc/bash_completion
      fi
    fi

    Damit diese Einstellung aktiv wird, muss man sich am System ab- und wieder anmelden.

    Quelle: http://serverfault.com

  • Bei SharePoint 2013 lässt sich wegen des Fehlens des Features ‚Ratings‘ keine Community-Website erstellen

    Das Erstellen einer Community-Website in SharePoint schlägt wegen eines fehlenden Features ‚Ratings‘ mit folgender Meldung fehl:
    Das Abhängigkeitsfeature ‚Ratings‘ (ID: 915c240e-a6cc-49b8-8b2c-0bff8b553ed3) für das Feature ‚CommunitySite‘ (ID: 961d6a9c-4388-4cf2-9733-38ee8c89afd4) ist in diesem Bereich nicht aktiviert.
    Lösung:
    Aktivierung des Features ‚Ratings‘ mit der Powershell.
  • SSH Port Forwarding – SSH-Port-Weiterleitung – SSH-Tunnel durch eine Firewall – RDP-Tunnel über SSH-Port

    Aufgabenstellung: Man betreibt in seinem Heimnetzwerk einen Linux-Server und mehrere Windows-Rechner. Vom Internet aus möchte man nun auf seine Windows-Rechner per RDP (Remote Desktop Protocol Port 3389) zugreifen. Aus Sicherheitsgründen ist aus dem Internet aber kein direkter Zugriff auf den RDP Port 3389 im Heimnetzwerk möglich. Allein der Zugriff auf den Linux-Rechner per SSH ist per Port-Weiterleitung im Router des Heimnetzwerks aktiviert.

    Lösung: Tunneln der RDP-Verbindung durch das SSH-Protokoll.

    a) Nativ von einer Linux / Mac OSX Shell:

    ssh -LYYYY:NAME_DES_WINDOWS_RECHNERS:3389 BENUTZERNAME@IP_DES_ROUTERS -p XXX
    # -LYYYY = Lokaler Port über den die RDP-Vebindung geöffnet wird.
    # NAME_DES_WINDOWS_RECHNERS: Name oder IP des Windows Rechners, auf den per RDP zugegriffen werden soll, im lokalen Netz
    # -p XXX = Port der vom Router fürs Internet freigegeben wurde und an den SSH Port des Linux Rechner weiter geleitet wird.
    # IP_DES_ROUTERS = Öffentliche IP Adresse oder DNS-Name unter der der Router im Internet zu erreichen ist. 
    # z.B: 
    ssh -L5000:192.168.1.234:3389 max@mustermann.dyndns.com -p 10000

    b) Mit dem SSH-Client Putty von einem Windows-System:

    Um mit Putty das RDP-Protokoll über eine SSH-Verbindung tunneln zu können, muss man in den Sessioneinstellungen, unter Connection –> SSH –>  Tunnels den lokalen Port, den zu tunnelnden Remote Port und den Zielrechner für den Tunnel definieren:

    putty_ssh_tunnel_01 putty_ssh_tunnel_02

    Um nun also vom Internet aus auf seinen Windows-Rechner per RDP (Remote Desktop Protocol Port 3389) zuzugreifen, muss man, nachdem die SSH-Verbindung geöffnet wurde, eine RDP-Verbindung zu localhost:5000 (Localhost Port 5000) öffnen.

    rdp_tunnel_ueber_ssh

  • SharePoint 2010: Webpartfehler Zugriff verweigert (Access Denied Web Part Error)

    Beim Aufrufen einer Sharepoint-Seite mit Webparts, von denen der aktuelle Benutzer keine Rechte besitzt, wird folgender Fehler angezeigt:

    Webpartfehler: Zugriff verweigert. Sie haben keine Berechtigung, diesen Vorgang auszuführen oder auf diese Ressource zuzugreifen.

    SharePoint 2010: Weppartfehler Zugriff verweigert. (Access Denied Web Part Error)
    SharePoint 2010: Webpartfehler Zugriff verweigert (Access Denied Web Part Error)

    Die Sharepoint-Webseite soll Uploads von verschiedenen Benutzern zentral sammeln. Damit ein Benutzer nur Zugriff auf seine eigenen Uploads haben soll, wurde für jeden User eine eigene Dokumentenbibliothek angelegt. Bei dieser Dokumentenbibliothek wurde die Berechtigungsvererbung entfernt und nur dem User selbst und den administrativen Usern Rechte explizit gewährt. Um den Komfort zu erhöhen, wurde für jede Dokumentenbibliothek ein Webpart in die Standardseite eingefügt. Als ich mich mit einem Testuser, der nur Rechte auf eine Dokumentenbibliothek hatte, bei der Sharepoint-Webseite anmeldete, musste ich feststellen, dass die Webparts, auf die der User keine Berechtigungen hatte, nicht automatisch ausgeblendet wurden. Für jeden Webpart ohne Berechtigungen wurde der oben stehende Fehler angezeigt. Im Blogeintrag „SharePoint 2010 Access Denied Web Part Error“ musste ich lesen, dass man diesen Umstand nicht mit Sharepoint-Bordmitteln beheben kann („I am still waiting on Microsoft for that as well“). Die Lösung, die der Blogeintrag empfiehlt, ist eine „Quick and Dirty“-Lösung mit jQuery, die die Fehlermeldungen einfach clientseitig ausblendet. Dazu soll ein Inhaltswebpart mit einem jQuery Javascript Snippet am Seitenende eingefügt werden.

    <script src=“/jquery.min.js“ type=“text/javascript“></script>
    <script language=“javascript“>
    $(„span:contains(‚Fehler‘)“).hide();
    $(„div:contains(‚Zugriff verweigert‘):not(:has(div))“).hide();
    </script>

    Dabei bin ich auf ein neues Problem gestoßen. Ich fand beim Inhaltswebpart von Sharepoint 2010 – im Unterschied zu Sharepoint 2007 – keine Option, um HTML-Quellcode einzugeben. Folgender Blogeintrag brachte eine einfache Lösung: „Insert JavaScript into a Content Editor Web Part„. Man muss den Code in eine Datei auslagern und diese dann dem Inhaltswebpart von Sharepoint 2010 zuweisen.

    Einstellungen Inhaltswebpart
    Einbinden von Code in das Inhaltswebpart

    Nachdem dieses Problem gelöst worden war, musste ich feststellen, dass die Lösung, die Fehler mit jQuery auszublenden, noch nicht zufriedenstellend war. Die eigentlichen Fehler sind zwar ausgeblendet, die umgebenden Container aber nicht.

    Ausgebendete Webpartfehler Version 1
    Ausgeblendete Webpartfehler Version 1

    Leider waren immer noch Linien der umgebenden Containern zu sehen, ebenso störte der große Abstand zum Seitentitel. Nach etwas Experimentieren mit Firebug habe ich das Script wie folgt abgeändert:

    <script src=“/jquery.min.js“ type=“text/javascript“></script>
    <script language=“javascript“>
    $(„tr td.s4-wpcell-plain:contains(‚Fehler‘)“).hide();
    </script>

    Dies brachte dann den gewünschten Effekt.

    Webpartfehler vollständig ausgeblendet
    Webpartfehler vollständig ausgeblendet

    Mit diesem Script wurden die Webpartfehler und die umgebenden Container vollständig ausgeblendet. Was jedoch bei dieser Lösung beachtet werden muss, ist, dass in der Ausgabe der Webparts, die angezeigt werden sollen, nicht das Wort ‚Fehler‘ vorkommt, da sonst auch dieses Webpart ausgeblendet werden würde.

  • Darstellen der Ordnerstruktur einer SharePoint-Dokumentenbibliothek mithilfe einer Treeview

    Die Aufgabenstellung war, ein Formularcenter mithilfe von SharePoint zu erstellen. Es sollten über 400 Formulare hierarchisch gegliedert zum Download angeboten werden. Nach längerem Testen der standardmäßigen Gruppierungfunktionalitäten für Sharepoint-Listen, was nicht das gewünschte Ergebnis brachte, stieß ich auf folgenden englischen Blogeintrag: Adding a Treeview to a Document Library using SPTreeView and SPHierarchicalDataSource

    Hier wurde gezeigt, wie man mittels SharePoint-Designer eine Ansicht erstellen kann, die die Ordnerstruktur einer SharePoint-Dokumentenbibliothek mittels eines TreeView-Steuerelementes abbildet – und dies ganz ohne Hilfe eines Webparts.

    Folgende Schritte sind für eine TreeView-Ansicht einer SharePoint-Dokumentenbibliothek notwendig:
    1. Aktivieren der Dateiansicht im SharePoint-Designer, um „Alle Dateien“ anzuzeigen. Dies muss unter den Website-Einstellungen der entsprechenden Websitesammlung gemacht werden. Hier ist unter der Rubrik „Websitesammlungsverwaltung“ der Link „SharePoint Designer-Einstellungen“ auszuwählen. Danach muss die Checkbox „Verwaltung der URL-Struktur der Website aktivieren“ aktiv gesetzt werden.

    SharePoint_Designer_Einstellungen

    SharePoint_Designer_Alle_Dateien_anzeigen

    2.  Danach ist die entsprechende View, die mit dem TreeView-Steuerelement versehen werden soll, im SharePoint-Designer im erweiterten Modus zu bearbeiten.

    SharePoint_Designer_Datei_im_erweiterten_Modus_bearbeiten

    3. Danach wird der komplette Inhalt des ContentPlaceHolder-Tags mit der ID „PlaceHolderMain“ ausgeschnitten und über die Zwischenablage in einem externen Editor temporär abgelegt.

    <asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">
    
    <-- Gesamten Taginhalt ausschneiden und zwischenspeichern -->
    
    </asp:Content>

    4. Erstellen einer HTML-Tabelle in dem leeren ContentPlaceHolder-Tag, um das Treeview-Steuerelement und die ursprüngliche Liste der Dokumentenbibliothek zu platzieren.

    <asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">
    
    <-- Tabelle als Layouthilfe für die Treeviev und die Liste der Dokumentenbibliothek -->
    <table style="width: 100%">
     <tr valign="top">
         <td width="20%">
         <-- Spalte für die Treeview -->
         </td>
         <td>
         <-- Spalte für die Listendarstellung der Dokumentenbibliothek -->
         </td>
    
        </tr>
    </table>
    </asp:Content>

    5. Ermitteln der notwendigen Informationen für das Treeview-Steuerelement mithilfe der Powershell und dem SharePoint-Designer. Benötigt werden die ListID der Dokumentenbibliothek und die ID der Webseite, in der sich die Dokumentenbibliothek befindet.

    Die ListID der Dokumentenbibliothek wird mit dem SharePoint-Designer ermittelt:

    ListID_von_SharePoint_Liste_mit_SharePoint_Designer_ermitteln

    Die ID der Website kann mit der PowerShell ermittelt werden:

    PS C:\scripts> $site=get-spsite http://xxxxxxxxx/formularcenter
    PS C:\scripts> $site.id
    Guid
    ----
    e2044234-0449-4362-af2b-7ba48b9ad678

    6. Vorbereiten und Anpassen des Codes für das Treeview-Steuerelement:

    <SharePoint:SPHierarchyDataSourceControl id="doclibDataSource" runat="server" RootListId="XXXXXXXXXXXXXXX" RootWebId="YYYYYYYYYYYYY" ShowFolderChildren="true" EnableViewState="false"></SharePoint:SPHierarchyDataSourceControl>
    <SharePoint:SPTreeView ID="doclibtreeview" runat="server" DataSourceID="doclibDataSource" EnableViewState="false" ExpandDepth="2"  SelectedNodeStyle-CssClass="ms-tvselected"></SharePoint:SPTreeView>
    
    <-- XXXXXXXXXXXXXX = ID der Dokumentenbibliothek, ermittelt mit dem SharePoint Designer -->
    <-- YYYYYYYYYYYYYY = ID der Website, ermittelt mit der Powershell -->

    7. Einfügen des Treeview-Codes in die oben erstellte Tabelle.

    8. Einfügen des zwischengespeicherten Codes für die eigentliche Listendarstellung der Dokumentenbibliothek, ebenfalls in die oben erstellte Tabelle.

    9. Das Ganze sollte nun wie folgt aussehen:

    SharePoint_Dokumentenbibliothek_mit_Treeview