Share via


Verbinding maken met HDInsight (Apache Hadoop) met behulp van SSH

Leer hoe u Secure Shell (SSH) gebruikt om veilig verbinding te maken met Apache Hadoop in Azure HDInsight. Zie de architectuur van het virtuele Azure HDInsight-netwerk voor meer informatie over het maken van verbinding via een virtueel netwerk. Zie ook een implementatie van een virtueel netwerk plannen voor Azure HDInsight-clusters.

De volgende tabel bevat de adres- en poortgegevens die nodig zijn bij het maken van verbinding met HDInsight met behulp van een SSH-client:

Adres Poort Maakt verbinding met...
<clustername>-ssh.azurehdinsight.net 22 Primair hoofdknooppunt
<clustername>-ssh.azurehdinsight.net 23 Secundair hoofdknooppunt
<edgenodename>.<clustername>-ssh.azurehdinsight.net 22 edge-knooppunt (elk ander clustertype, als er een edge-knooppunt bestaat)

Vervang <clustername> door de naam van uw cluster. Vervang <edgenodename> door de naam van het edge-knooppunt.

Als uw cluster een edge-knooppunt bevat, raden we u aan altijd verbinding te maken met het edge-knooppunt met behulp van SSH. De hoofdknooppunten hosten services die essentieel zijn voor de status van Hadoop. Het Edge-knooppunt voert alleen uit wat u erop zet. Zie Edge-knooppunten gebruiken in HDInsight voor meer informatie over het gebruik van edge-knooppunten.

Hint

Wanneer u voor het eerst verbinding maakt met HDInsight, geeft uw SSH-client mogelijk een waarschuwing weer dat de echtheid van de host niet tot stand kan worden gebracht. Wanneer u hierom wordt gevraagd, selecteert u Ja om de host toe te voegen aan de lijst met vertrouwde servers van uw SSH-client.

Als u eerder verbinding hebt gemaakt met een server met dezelfde naam, ontvangt u mogelijk een waarschuwing dat de opgeslagen hostsleutel niet overeenkomt met de hostsleutel van de server. Raadpleeg de documentatie voor uw SSH-client over het verwijderen van de bestaande vermelding voor de servernaam.

SSH-clients

Linux-, Unix- en macOS-systemen bieden de ssh en scp opdrachten. De ssh client wordt vaak gebruikt voor het maken van een externe opdrachtregelsessie met een Linux- of Unix-systeem. De scp client wordt gebruikt om bestanden veilig te kopiëren tussen uw client en het externe systeem.

Microsoft Windows installeert standaard geen SSH-clients. De ssh clients en scp clients zijn beschikbaar voor Windows via de volgende pakketten:

Er zijn ook verschillende grafische SSH-clients, zoals PuTTY en MobaXterm. Hoewel deze clients kunnen worden gebruikt om verbinding te maken met HDInsight, is het proces van verbinding anders dan het ssh hulpprogramma. Zie de documentatie van de grafische client die u gebruikt voor meer informatie.

Verificatie: SSH-sleutels

SSH-sleutels maken gebruik van openbare-sleutelcryptografie om SSH-sessies te verifiëren. SSH-sleutels zijn veiliger dan wachtwoorden en bieden een eenvoudige manier om toegang tot uw Hadoop-cluster te beveiligen.

Als uw SSH-account is beveiligd met behulp van een sleutel, moet de client de overeenkomende persoonlijke sleutel opgeven wanneer u verbinding maakt:

  • De meeste clients kunnen worden geconfigureerd voor het gebruik van een standaardsleutel. De ssh client zoekt bijvoorbeeld naar een persoonlijke sleutel in ~/.ssh/id_rsa Linux- en Unix-omgevingen.

  • U kunt het pad naar een persoonlijke sleutel opgeven. Met de ssh client wordt de -i parameter gebruikt om het pad naar de persoonlijke sleutel op te geven. Bijvoorbeeld: ssh -i ~/.ssh/id_rsa sshuser@myedge.mycluster-ssh.azurehdinsight.net.

  • Als u meerdere persoonlijke sleutels hebt voor gebruik met verschillende servers, kunt u overwegen een hulpprogramma zoals ssh-agent (https://en.wikipedia.org/wiki/Ssh-agent). Het ssh-agent hulpprogramma kan worden gebruikt om automatisch de sleutel te selecteren die moet worden gebruikt bij het tot stand brengen van een SSH-sessie.

Belangrijk

Als u uw persoonlijke sleutel beveiligt met een wachtwoordzin, moet u de wachtwoordzin invoeren wanneer u de sleutel gebruikt. Hulpprogramma's zoals ssh-agent kunnen het wachtwoord voor uw gemak in de cache opslaan.

Een SSH-sleutelpaar maken

Gebruik de ssh-keygen opdracht om bestanden met een openbare en persoonlijke sleutel te maken. Met de volgende opdracht wordt een 2048-bits RSA-sleutelpaar gegenereerd dat kan worden gebruikt met HDInsight:

ssh-keygen -t rsa -b 2048

Tijdens het maken van de sleutel wordt u gevraagd om informatie te geven. Bijvoorbeeld wanneer de sleutels worden opgeslagen of een wachtwoordzin moet worden gebruikt. Nadat het proces is voltooid, worden er twee bestanden gemaakt; een openbare sleutel en een persoonlijke sleutel.

  • De openbare sleutel wordt gebruikt om een HDInsight-cluster te maken. De openbare sleutel heeft een extensie van .pub.

  • De persoonlijke sleutel wordt gebruikt om uw client te verifiëren bij het HDInsight-cluster.

Belangrijk

U kunt uw sleutels beveiligen met behulp van een wachtwoordzin. Een wachtwoordzin is in feite een wachtwoord voor uw persoonlijke sleutel. Zelfs als iemand uw persoonlijke sleutel verkrijgt, moet deze de wachtwoordzin hebben om de sleutel te kunnen gebruiken.

HDInsight maken met behulp van de openbare sleutel

Methode van aanmaak De openbare sleutel gebruiken
Azure Portal Schakel het selectievakje Clusteraanmeldingswachtwoord voor SSH gebruiken uit en selecteer vervolgens Openbare sleutel als het SSH-verificatietype. Selecteer ten slotte het openbare-sleutelbestand of plak de tekstinhoud van het bestand in het veld openbare SSH-sleutel .
Dialoogvenster openbare SSH-sleutel in het HDInsight-cluster maken.
Azure PowerShell Gebruik de -SshPublicKey parameter van de cmdlet New-AzHdinsightCluster en geef de inhoud van de openbare sleutel door als een tekenreeks.
Azure-opdrachtregelinterface (CLI) Gebruik de --sshPublicKey parameter van de az hdinsight create opdracht en geef de inhoud van de openbare sleutel door als een tekenreeks.
Resourcebeheerder-sjabloon Zie HDInsight implementeren in Linux met SSH-sleutel voor een voorbeeld van het gebruik van SSH-sleutels met een sjabloon. Het publicKeys element in het azuredeploy.json-bestand wordt gebruikt om de sleutels door te geven aan Azure bij het maken van het cluster.

Verificatie: wachtwoord

SSH-accounts kunnen worden beveiligd met behulp van een wachtwoord. Wanneer u via SSH verbinding maakt met HDInsight, wordt u gevraagd het wachtwoord in te voeren.

Waarschuwing

Microsoft raadt het gebruik van wachtwoordverificatie voor SSH niet aan. Wachtwoorden kunnen worden geraden en zijn kwetsbaar voor beveiligingsaanvallen. In plaats daarvan raden we u aan om SSH-sleutels te gebruiken voor verificatie.

Belangrijk

Het wachtwoord voor het SSH-account verloopt 70 dagen nadat het HDInsight-cluster is gemaakt. Als uw wachtwoord verloopt, kunt u dit wijzigen met behulp van de informatie in het HDInsight-document beheren .

HDInsight maken met een wachtwoord

Methode van aanmaak Het wachtwoord opgeven
Azure Portal Het SSH-gebruikersaccount heeft standaard hetzelfde wachtwoord als het aanmeldingsaccount voor het cluster. Als u een ander wachtwoord wilt gebruiken, schakelt u Het aanmeldingswachtwoord van het cluster voor SSH uit en voert u het wachtwoord in het veld SSH-wachtwoord in.
Het dialoogvenster SSH-wachtwoord in het HDInsight-cluster maken.
Azure PowerShell Gebruik de --SshCredential parameter van de cmdlet New-AzHdinsightCluster en geef een PSCredential object door dat de naam en het wachtwoord van het SSH-gebruikersaccount bevat.
Azure-opdrachtregelinterface (CLI) Gebruik de --ssh-password parameter van de az hdinsight create opdracht en geef de wachtwoordwaarde op.
Resource Manager-sjabloon Zie HDInsight implementeren in Linux met een SSH-wachtwoord voor een voorbeeld van het gebruik van een wachtwoord met een sjabloon. Het linuxOperatingSystemProfile element in het azuredeploy.json-bestand wordt gebruikt om de SSH-accountnaam en het wachtwoord door te geven aan Azure bij het maken van het cluster.

Het SSH-wachtwoord wijzigen

Zie de sectie Wachtwoorden wijzigen van het HDInsight-document beheren voor meer informatie over het wijzigen van het wachtwoord voor het SSH-gebruikersaccount.

Gekoppeld aan het authenticatiedomein HDInsight

Als u een HDInsight-cluster gebruikt dat lid is van een domein, moet u de opdracht gebruiken nadat u verbinding hebt gemaakt met de kinit lokale SSH-gebruiker. Met deze opdracht wordt u om een domeingebruiker en wachtwoord gevraagd en wordt uw sessie geverifieerd met het Microsoft Entra-domein dat is gekoppeld aan het cluster.

U kunt kerberos-verificatie ook inschakelen op elk domeinknooppunt (bijvoorbeeld hoofdknooppunt, edge-knooppunt) om ssh te gebruiken met behulp van het domeinaccount. Ga als volgt te werk om dit configuratiebestand voor sshd te bewerken:

sudo vi /etc/ssh/sshd_config

opmerking ongedaan maken en wijzigen KerberosAuthentication in yes

sudo service sshd restart

Gebruik klist de opdracht om te controleren of de Kerberos-verificatie is geslaagd.

Zie Domein-gekoppelde HDInsight configureren voor meer informatie.

Verbinding maken met knooppunten

De hoofdknooppunten en het edge-knooppunt (indien aanwezig) kunnen worden geopend via internet op poorten 22 en 23.

  • Wanneer u verbinding maakt met de hoofdknooppunten, gebruikt u poort 22 om verbinding te maken met het primaire hoofdknooppunt en poort 23 om verbinding te maken met het secundaire hoofdknooppunt. De volledig gekwalificeerde domeinnaam die moet worden gebruikt, is clustername-ssh.azurehdinsight.net, waar clustername is de naam van uw cluster.

    # Connect to primary head node
    # port not specified since 22 is the default
    ssh sshuser@clustername-ssh.azurehdinsight.net
    
    # Connect to secondary head node
    ssh -p 23 sshuser@clustername-ssh.azurehdinsight.net
    
  • Gebruik poort 22 wanneer u verbinding maakt met het Edge-knooppunt. De volledig gekwalificeerde domeinnaam is edgenodename.clustername-ssh.azurehdinsight.net, waarbij u edgenodename een naam hebt opgegeven bij het maken van het edge-knooppunt. clustername is de naam van het cluster.

    # Connect to edge node
    ssh sshuser@edgnodename.clustername-ssh.azurehdinsight.net
    

Belangrijk

In de vorige voorbeelden wordt ervan uitgegaan dat u wachtwoordverificatie gebruikt of dat certificaatverificatie automatisch plaatsvindt. Als u een SSH-sleutelpaar gebruikt voor verificatie en het certificaat niet automatisch wordt gebruikt, gebruikt u de -i parameter om de persoonlijke sleutel op te geven. Bijvoorbeeld: ssh -i ~/.ssh/mykey sshuser@clustername-ssh.azurehdinsight.net.

Zodra de verbinding is gemaakt, wordt de prompt gewijzigd om de SSH-gebruikersnaam en het knooppunt aan te geven waaraan u bent verbonden. Als u bijvoorbeeld verbinding maakt met het primaire hoofdknooppunt als sshuser, is de prompt sshuser@<active-headnode-name>:~$.

Verbinding maken met workerknooppunten en Apache Zookeeper-knooppunten

De werkknooppunten en Zookeeper-knooppunten zijn niet rechtstreeks toegankelijk vanaf internet. Ze kunnen worden geopend vanaf de hoofdknooppunten of edge-knooppunten van het cluster. Hier volgen de algemene stappen om verbinding te maken met andere knooppunten:

  1. SSH gebruiken om verbinding te maken met een hoofd- of edge-knooppunt:

    ssh sshuser@myedge.mycluster-ssh.azurehdinsight.net
    
  2. Gebruik vanuit de SSH-verbinding met het hoofd- of edge-knooppunt de ssh opdracht om verbinding te maken met een werkknooppunt in het cluster:

    ssh sshuser@wn0-myhdi
    

    Als u een lijst met de knooppuntnamen wilt ophalen, raadpleegt u hdInsight beheren met behulp van het Apache Ambari REST API-document .

Als het SSH-account is beveiligd met een wachtwoord, voert u het wachtwoord in wanneer u verbinding maakt.

Als het SSH-account is beveiligd met behulp van SSH-sleutels, moet u ervoor zorgen dat SSH-doorsturen is ingeschakeld op de client.

Opmerking

Een andere manier om rechtstreeks toegang te krijgen tot alle knooppunten in het cluster, is door HDInsight te installeren in een virtueel Azure-netwerk. Vervolgens kunt u uw externe machine koppelen aan hetzelfde virtuele netwerk en rechtstreeks toegang krijgen tot alle knooppunten in het cluster.

Zie Een virtueel netwerk plannen voor HDInsight voor meer informatie.

Doorsturen van SSH-agent configureren

Belangrijk

Bij de volgende stappen wordt ervan uitgegaan dat een Linux- of UNIX-systeem werkt met Bash in Windows 10. Als deze stappen niet werken voor uw systeem, moet u mogelijk de documentatie voor uw SSH-client raadplegen.

  1. Gebruik een teksteditor, open ~/.ssh/config. Als dit bestand niet bestaat, kunt u het maken door het in te voeren touch ~/.ssh/config op een opdrachtregel.

  2. Voeg de volgende tekst toe aan het bestand config.

    Host <edgenodename>.<clustername>-ssh.azurehdinsight.net
        ForwardAgent yes
    

    Vervang de hostgegevens door het adres van het knooppunt waarmee u verbinding maakt met behulp van SSH. In het vorige voorbeeld wordt het Edge-knooppunt gebruikt. Met deze vermelding configureert u het doorsturen van de SSH-agent voor het opgegeven knooppunt.

  3. Test het doorsturen van de SSH-agent met behulp van de volgende opdracht vanuit de terminal:

    echo "$SSH_AUTH_SOCK"
    

    Met deze opdracht wordt informatie geretourneerd die lijkt op de volgende tekst:

    /tmp/ssh-rfSUL1ldCldQ/agent.1792
    

    Als er niets wordt geretourneerd, dan wordt ssh-agent niet gestart.

  4. Nadat u hebt gecontroleerd of ssh-agent wordt uitgevoerd, gebruikt u het volgende om uw persoonlijke SSH-sleutel toe te voegen aan de agent:

    ssh-add ~/.ssh/id_rsa
    

    Als uw persoonlijke sleutel is opgeslagen in een ander bestand, vervangt u ~/.ssh/id_rsa het pad naar het bestand.

  5. Maak verbinding met het edge-knooppunt of hoofdknooppunt van het cluster met behulp van SSH. Gebruik vervolgens de SSH-opdracht om verbinding te maken met een werkernode of een zookeep-knooppunt. De verbinding wordt tot stand gebracht met behulp van de doorgestuurde sleutel.

Volgende stappen