Verbinding maken met HDInsight (Apache Hadoop) via 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 Primaire hoofdknooppunt
<clustername>-ssh.azurehdinsight.net 23 Secundaire 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 aan om altijd verbinding te maken met het edge-knooppunt via SSH. De hoofdknooppunten hosten services die essentieel zijn voor de status van Hadoop. Het Edge-knooppunt voert alleen uit wat u op het knooppunt plaatst. Zie Edge-knooppunten gebruiken in HDInsight voor meer informatie over het gebruik van Edge-knooppunten.

Tip

Wanneer u voor het eerst verbinding maakt met HDInsight, wordt in de SSH-client mogelijk de waarschuwing weergegeven dat de authenticiteit van de host kan niet worden vastgesteld. Wanneer dit 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 gehad met een server met dezelfde naam, krijgt u mogelijk de waarschuwing dat de opgeslagen hostsleutel niet overeenkomt met de hostsleutel van de server. Raadpleeg de documentatie van de SSH-client als u wilt weten hoe u de bestaande vermelding voor de server verwijdert.

SSH-clients

Linux-, Unix-en macOS-systemen bieden de opdrachten ssh en scp. De ssh-client wordt meestal gebruikt om vanaf de opdrachtregel een externe sessie op te zetten met een Linux- of Unix-systeem. De scp-client wordt gebruikt om veilig bestanden te kopiëren tussen de client en het externe systeem.

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

Er zijn ook verschillende grafische SSH-clients, zoals PuTTY en MobaXterm. Met deze clients kunt u verbinding maken met HDInsight, maar het proces om verbinding, verschilt ten opzichte van het proces in het hulpprogramma ssh. 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 de toegang tot uw Hadoop-cluster te beveiligen.

Als uw SSH-account wordt beveiligd met een sleutel, moet de client tijdens het verbinden de bijbehorende privésleutel opgeven:

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

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

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

Belangrijk

Als u uw privésleutel beveiligt met een wachtwoordzin, moet u de wachtwoordzin invoeren bij gebruik van de sleutel. Hulpprogramma's zoals ssh-agent kunnen het wachtwoord voor extra gebruiksgemak in de cache opslaan.

Een SSH-sleutelpaar maken

Gebruik de opdracht ssh-keygen om openbare- en privésleutelbestanden te maken. Met de volgende opdracht maakt u een 2048-bits RSA-sleutelpaar dat kan worden gebruikt met HDInsight:

ssh-keygen -t rsa -b 2048

U wordt gevraagd om informatie tijdens het maken van de sleutel. U moet bijvoorbeeld opgeven waar de sleutels worden opgeslagen en er wordt gevraagd of u een wachtwoordzin wilt gebruiken. Wanneer het proces is voltooid, worden er twee bestanden gemaakt: een openbare sleutel en een privésleutel.

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

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

Belangrijk

U kunt uw sleutels beveiligen met een wachtwoordzin. Dit is in feite een wachtwoord voor uw privésleutel. Wanneer iemand uw privésleutel in handen krijgt, heeft deze óók de wachtwoordzin nodig om de sleutel te kunnen gebruiken.

HDInsight maken met de openbare sleutel

Methode voor het maken 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 .
SSH public key dialog in HDInsight cluster creation.
Azure PowerShell Gebruik de -SshPublicKey parameter van de cmdlet New-AzHdinsightCluster en geef de inhoud van de openbare sleutel door als een tekenreeks.
Azure-CLI Gebruik de parameter --sshPublicKey van de opdracht az hdinsight create en plak de inhoud van de openbare sleutel als tekenreeks.
Resource Manager-sjabloon Zie HDInsight op Linux implementeren met een SSH-sleutel voor een voorbeeld van het gebruik van SSH-sleutels met een sjabloon. Het publicKeys-element in het bestand azuredeploy.json wordt gebruikt om sleutels door te geven aan Azure bij het maken van het cluster.

Verificatie: wachtwoord

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

Waarschuwing

Het wordt niet aangeraden om wachtwoordverificatie te gebruiken voor SSH. Wachtwoorden kunnen worden geraden en zijn gevoelig voor ernstige aanvallen. In plaats daarvan wordt aangeraden 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 het wijzigen met behulp van de informatie in het document HDInsight beheren.

HDInsight maken met een wachtwoord

Methode voor het maken Het wachtwoord specificeren
Azure Portal Het SSH-gebruikersaccount heeft standaard hetzelfde wachtwoord als het aanmeldingsaccount van 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.
SSH password dialog in HDInsight cluster creation.
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-CLI Gebruik de parameter --ssh-password van de opdracht az hdinsight create en geef de wachtwoordwaarde op.
Resource Manager-sjabloon Zie HDInsight op Linux implementeren met een SSH-wachtwoord voor een voorbeeld van het gebruik met een wachtwoord met een sjabloon. Het linuxOperatingSystemProfile-element in het bestand azuredeploy.json 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 het gedeelte Wachtwoorden wijzigen van het document HDInsight beheren voor meer informatie over het wijzigen van het wachtwoord van het SSH-gebruikersaccount.

Aan het verificatiedomein gekoppelde 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. Hiervoor moet u het bestand sshd config bewerken:

sudo vi /etc/ssh/sshd_config

verwijder de opmerkingen en wijzig KerberosAuthentication in yes

sudo service sshd restart

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

Zie Aan een domein gekoppelde HDInsight-clusters 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.

  • Bij het verbinden 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 FQDN (Fully Qualified Domain Name) die u moet gebruiken is clustername-ssh.azurehdinsight.net, waarbij clustername de naam van uw cluster is.

    # 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 als u verbinding wilt maken met het edge-knooppunt. De FQDN (Fully Qualified Domain Name) is edgenodename.clustername-ssh.azurehdinsight.net, waarbij edgenodename een naam is die u hebt opgegeven bij maken van het edge-knooppunt. clusternameis 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 wordt uitgevoerd. Als u een SSH-sleutelpaar voor verificatie gebruikt en het certificaat niet automatisch wordt toegepast, moet u de parameter -i gebruiken 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. Wanneer u bijvoorbeeld verbonden bent met het primaire hoofdknooppunt als sshuser, is de prompt sshuser@<active-headnode-name>:~$.

Verbinding maken naar werkknooppunten en Apache Zookeeper-knooppunten

De werkknooppunten en Zookeeper-knooppunten zijn niet rechtstreeks toegankelijk vanaf internet. Ze zijn toegankelijk vanuit 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 van de SSH-verbinding naar het hoofd- of Edge-knooppunt de opdracht ssh om verbinding te maken met een werkrolknooppunt 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 om verbinding te maken.

Als het SSH-account is beveiligd met SSH-sleutels, moet SSH-forwarding zijn ingeschakeld op de client.

Notitie

U kunt ook HDInsight installeren op een virtueel Azure-netwerk om rechtstreeks toegang te verkrijgen tot alle knooppunten in het cluster. U kunt dan uw externe machine koppelen aan datzelfde virtuele netwerk en rechtstreeks toegang verkrijgen tot alle knooppunten in het cluster.

Zie Een virtueel netwerk plannen voor HDInsight voor meer informatie.

Het doorsturen van SSH-agents configureren

Belangrijk

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

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

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

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

    Vervang de hostinformatie door het adres van het knooppunt waar u verbinding mee maakt via SSH. In het vorige voorbeeld werd gebruikgemaakt van het Edge-knooppunt. Hiermee configureert u het doorsturen van de SSH-agent naar het opgegeven knooppunt.

  3. Test het doorsturen van de SSH-agent met de volgende opdracht vanaf 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, wordt deze ssh-agent niet uitgevoerd.

  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 wordt opgeslagen in een ander bestand, vervangt u ~/.ssh/id_rsa door het pad naar het bestand.

  5. Maak met SSH verbinding met het Edge-knooppunt of de hoofdknooppunten van het cluster. Gebruik vervolgens de SSH-opdracht om verbinding te maken met een werkrol- of Zookeeper-knooppunt. De verbinding wordt gemaakt met de doorgestuurde sleutel.

Volgende stappen