Ansluta till HDInsight (Apache Hadoop) med hjälp av SSH

Lär dig hur du använder Secure Shell (SSH) för att ansluta på ett säkert sätt till Apache Hadoop i Azure HDInsight. Information om hur du ansluter via ett virtuellt nätverk finns i Arkitektur för virtuella Azure HDInsight-nätverk. Se även Planera en distribution av virtuella nätverk för Azure HDInsight-kluster.

Följande tabell innehåller den adress- och portinformation som behövs vid anslutning till HDInsight med hjälp av en SSH-klient:

Adress Port Ansluter till ...
<clustername>-ssh.azurehdinsight.net 22 Den primära huvudnoden
<clustername>-ssh.azurehdinsight.net 23 Den sekundära huvudnoden
<edgenodename>.<clustername>-ssh.azurehdinsight.net 22 kantnod (alla andra klustertyper, om det finns en kantnod)

Ersätt <clustername> med namnet på klustret. Ersätt <edgenodename> med namnet på kantnoden.

Om klustret innehåller en kantnod, rekommenderar vi att du alltid ansluter till kantnoden via SSH. Värdtjänster för huvudnoder är viktiga för Hadoops hälsotillstånd. Kantnoden kör bara det som du placerar på den. Mer information om hur du använder kantnoder finns i Använda kantnoder i HDInsight.

Dricks

När du ansluter till HDInsight första gången kan SSH-klienten visa en varning att värdens äkthet inte kan fastställas. Vid uppmaning väljer du ”ja” för att lägga till värden i SSH-klientens lista över betrodda servrar.

Om du tidigare har anslutit till en server med samma namn kan du få en varning att den lagrade värdnyckeln inte matchar serverns värdnyckel. Läs dokumentationen för SSH-klienten om du vill ha information om hur du tar bort den befintliga posten för servernamnet.

SSH-klienter

Linux, Unix- och macOS system ger kommandon ssh och scp. Klienten ssh används ofta för att skapa en fjärrsession med kommandoradsverktyget med Linux eller Unix-baserade system. Klienten scp används för att kopiera filer mellan klienten och fjärrdatorn på ett säkert sätt.

Microsoft Windows installerar inga SSH-klienter som standard. Klienterna ssh och scp är tillgängliga för Windows via följande paket:

Det finns också flera grafiska SSH-klienter, till exempel PuTTY och MobaXterm. Dessa klienter kan användas för att ansluta till HDInsight, men processen för att ansluta skiljer sig från anslutningsprocessen med ssh-verktyget. Mer information finns i dokumentationen för den grafiska klient som du använder.

Autentisering: SSH-nycklar

SSH-nycklar använder kryptering med offentliga nycklar för att autentisera SSH-sessioner. SSH-nycklar är säkrare än lösenord och är ett enkelt sätt att skydda Hadoop-klustret.

Om ditt SSH-konto skyddas med en nyckel måste klienten tillhandahålla den matchande privata nyckeln när du ansluter:

  • De flesta klienter kan konfigureras att använda en standardnyckel. Exempelvis söker ssh-klienten efter en privat nyckel i ~/.ssh/id_rsa i Linux- och Unix-miljöer.

  • Du kan ange sökvägen till en privat nyckel. Med ssh-klienten används -i-parametern för att ange sökvägen till den privata nyckeln. Exempel: ssh -i ~/.ssh/id_rsa sshuser@myedge.mycluster-ssh.azurehdinsight.net

  • Om du har flera privata nycklar för användning med olika servrar kan verktyg som ssh-agent användas (https://en.wikipedia.org/wiki/Ssh-agent). Verktyget ssh-agent kan användas för att automatiskt välja nyckeln som ska användas när en SSH-session etableras.

Viktigt!

Om du skyddar den privata nyckeln med en lösenfras måste du ange lösenfrasen när du använder nyckeln. Verktyg som ssh-agent kan underlätta för dig genom att cachelagra lösenordet.

Skapa ett SSH-nyckelpar

Använd ssh-keygen-kommandot för att skapa filer för offentliga och privata nycklar. Följande kommando genererar ett 2048-bitars RSA-nyckelpar som kan användas med HDInsight:

ssh-keygen -t rsa -b 2048

Du uppmanas att ange information under processen för att skapa nycklar. Till exempel var nycklarna lagras eller om du vill använda en lösenfras. När processen har slutförts har två filer skapats: en offentlig nyckel och en privat nyckel.

  • Den offentliga nyckeln används för att skapa ett HDInsight-kluster. Den offentliga nyckeln har filnamnstillägget .pub.

  • Den privata nyckeln används för att autentisera din klient mot HDInsight-klustret.

Viktigt!

Du kan skydda dina nycklar med hjälp av en lösenfras. Detta är ett lösenord för den privata nyckeln. Även om någon får tag på din privata nyckel behöver de lösenfrasen för att kunna använda nyckeln.

Skapa HDInsight med hjälp av den offentliga nyckeln

Genereringsmetod Så här använder du den offentliga nyckeln
Azure Portal Avmarkera Använd klusterinloggningslösenord för SSH och välj sedan Offentlig nyckel som SSH-autentiseringstyp. Välj slutligen den offentliga nyckelfilen eller klistra in textinnehållet i filen i fältet offentlig SSH-nyckel .
SSH public key dialog in HDInsight cluster creation.
Azure PowerShell Använd parametern -SshPublicKey för cmdleten New-AzHdinsightCluster och skicka innehållet i den offentliga nyckeln som en sträng.
Azure CLI Använd --sshPublicKey-parametern för kommandot az hdinsight create och skicka innehållet i den offentliga nyckeln som en sträng.
Resource Manager-mall Ett exempel på hur du använder SSH-nycklar med en mall finns i avsnittet Deploy HDInsight on Linux with SSH key (Distribuera HDInsight i Linux med en SSH-nyckel). publicKeys-elementet i filen azuredeploy.json används för att skicka nycklarna till Azure när klustret skapas.

Autentisering: lösenord

SSH-konton kan skyddas med ett lösenord. När du ansluter till HDInsight med SSH uppmanas du att ange lösenordet.

Varning

Microsoft rekommenderar inte lösenordsverifiering för SSH. Lösenord kan gissas och är sårbara för råstyrkeattacker. I stället rekommenderar vi att du använder SSH-nycklar för autentisering.

Viktigt!

SSH-kontolösenordet upphör att gälla 70 dagar efter att HDInsight-klustret har skapats. Om ditt lösenord upphör att gälla kan du ändra det med hjälp av informationen i dokumentet Hantera HDInsight.

Skapa HDInsight med ett lösenord

Genereringsmetod Så här anger du lösenordet
Azure Portal SSH-användarkontot har som standard samma lösenord som kontot för klusterinloggning. Om du vill använda ett annat lösenord avmarkerar du Använd klusterinloggningslösenord för SSH och anger lösenordet i fältet SSH-lösenord .
SSH password dialog in HDInsight cluster creation.
Azure PowerShell Använd parametern --SshCredential för cmdleten New-AzHdinsightCluster och skicka ett PSCredential objekt som innehåller SSH-användarkontots namn och lösenord.
Azure CLI Använd --ssh-password-parametern för az hdinsight create-kommandot och ange lösenordsvärdet.
Resource Manager-mall Ett exempel på hur du använder ett lösenord med en mall finns i Deploy HDInsight on Linux with SSH password (Distribuera HDInsight i Linux med SSH-lösenord). linuxOperatingSystemProfile-elementet i filen azuredeploy.json används för att skicka SSH-kontonamnet och SSH-lösenordet till Azure när klustret skapas.

Ändra SSH-lösenordet

Information om hur du ändrar lösenordet för SSH-användarkontot finns i avsnittet Change passwords (Ändra lösenord) i dokumentet Manage HDInsight (Hantera HDInsight).

Autentiseringsdomänansluten HDInsight

Om du använder ett domänanslutet HDInsight-kluster måste du använda kommandot när du har anslutit till den kinit lokala SSH-användaren. Det här kommandot frågar efter en domänanvändare och ett lösenord och autentiserar sessionen med Microsoft Entra-domänen som är associerad med klustret.

Du kan också aktivera Kerberos-autentisering på varje domänansluten nod (till exempel huvudnod, gränsnod) till ssh med hjälp av domänkontot. Det gör du genom att redigera sshd-konfigurationsfilen:

sudo vi /etc/ssh/sshd_config

avkommentera och ändra KerberosAuthentication till yes

sudo service sshd restart

Använd klist kommandot för att kontrollera om Kerberos-autentiseringen lyckades.

Mer information finns i avsnittet Configure domain-joined HDInsight (Konfigurera domänanslutna HDInsight-kluster).

Anslut till noder

Huvudnoderna och gränsnoden (om det finns en) kan nås via Internet på portarna 22 och 23.

  • När du ansluter till huvudnoder använder du 22 för att ansluta till den primära huvudnoden, och port 23 för att ansluta till den sekundära huvudnoden. Det fullständiga domännamnet som ska användas är clustername-ssh.azurehdinsight.net, där clustername är namnet på klustret.

    # 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
    
  • När du ansluter till kantnoden använder du port 22. Det fullständiga domännamnet är edgenodename.clustername-ssh.azurehdinsight.net, där edgenodename är det namn du angav när du skapade kantnoden. clustername är namnet på klustret.

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

Viktigt!

I föregående exempel förutsätts att du använder lösenordsverifiering eller att certifikatautentisering sker automatiskt. Om du använder ett SSH-nyckelpar för autentisering och certifikatet inte används automatiskt, anger du den privata nyckeln med parametern -i. Exempel: ssh -i ~/.ssh/mykey sshuser@clustername-ssh.azurehdinsight.net

När du är ansluten ändras uppmaningen för att ange SSH-användarnamnet och noden som du är ansluten till. När du exempelvis är ansluten till den primära huvudnoden som sshuser visar fönstret sshuser@<active-headnode-name>:~$.

Anslut till arbets- och Apache Zookeeper-noder

Arbetsnoderna och Zookeeper-noderna är inte direkt åtkomliga från Internet. De kan nås från klustrets huvudnoder eller kantnoder. Här är de allmänna steg som du följer för att ansluta till andra noder:

  1. Använd SSH för att ansluta till en huvud- eller kantnod:

    ssh sshuser@myedge.mycluster-ssh.azurehdinsight.net
    
  2. Från SSH-anslutningen till huvud- eller kantnoden använder du ssh-kommandot för att ansluta till en arbetarnod i klustret:

    ssh sshuser@wn0-myhdi
    

    Information om hur du hämtar en lista över nodnamnen finns i dokumentet Hantera HDInsight med hjälp av Apache Ambari REST API .

Om SSH-kontot är skyddat med ett lösenord anger du lösenordet när du ansluter.

Om SSH-kontot är säkrad med SSH-nycklar kontrollerar du att SSH-vidarebefordran är aktiverad på klienten.

Kommentar

Ett annat sätt att direkt komma åt alla noder i klustret är att installera HDInsight i ett virtuellt Azure-nätverk. Därefter kan du ansluta till din fjärrdatorn i samma virtuella nätverk och direkt komma åt alla noder i klustret.

Mer information finns i Planera ett virtuellt nätverk för HDInsight.

Konfigurera vidarebefordran med SSH-agenten

Viktigt!

I följande steg förutsätter vi att du har ett Linux- eller UNIX-baserat system och att du arbetar med Bash i Windows 10. Om de här stegen inte fungerar på din dator kan du behöva läsa dokumentationen för SSH-klienten.

  1. Använd en textredigerare och öppna ~/.ssh/config. Om den här filen inte finns kan du skapa den genom att ange touch ~/.ssh/config på en kommandorad.

  2. Lägg till följande text i config-filen.

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

    Ersätt informationen för Host med adressen för den nod som du ansluter till med hjälp av SSH. I föregående exempel används kantnoden. Den här posten konfigurerar vidarebefordran med SSH-agenten för den angivna noden.

  3. Testa SSH-agentvidarebefordran med hjälp av följande kommando från terminalen:

    echo "$SSH_AUTH_SOCK"
    

    Det här kommandot returnerar information liknande följande text:

    /tmp/ssh-rfSUL1ldCldQ/agent.1792
    

    Om inget returneras ssh-agent körs det inte.

  4. När du har verifierat att ssh-agenten körs använder du följande för att lägga till din privata SSH-nyckel till agenten:

    ssh-add ~/.ssh/id_rsa
    

    Om din privata nyckel finns i en annan fil ersätter du ~/.ssh/id_rsa med sökvägen till filen.

  5. Anslut till kant- eller huvudnoder i klustret med hjälp av SSH. Använd sedan SSH-kommandot för att ansluta till en arbetar- eller Zookeeper-nod. Anslutningen upprättas med hjälp av den vidarebefordrade nyckeln.

Nästa steg