Připojení ke službě HDInsight (Apache Hadoop) pomocí SSH

Naučte se používat Secure Shell (SSH) k zabezpečenému připojení k Apache Hadoopu ve službě Azure HDInsight. Informace o připojení prostřednictvím virtuální sítě najdete v tématu Architektura virtuální sítě Azure HDInsight. Viz také Plánování nasazení virtuální sítě pro clustery Azure HDInsight.

Následující tabulka obsahuje informace o adrese a portu potřebné pro připojení ke službě HDInsight pomocí klienta SSH:

Adresa Port Připojení...
<clustername>-ssh.azurehdinsight.net 22 Primární hlavní uzel
<clustername>-ssh.azurehdinsight.net 23 Sekundární hlavní uzel
<edgenodename>.<clustername>-ssh.azurehdinsight.net 22 hraniční uzel (jakýkoli jiný typ clusteru, pokud existuje hraniční uzel)

Nahraďte <clustername> názvem svého clusteru. Parametr <edgenodename> nahraďte názvem hraničního uzlu.

Pokud cluster obsahuje hraniční uzel, doporučujeme vám připojovat se k hraničnímu uzlu vždy pomocí příkazu SSH. Hlavní uzly hostují služby, které jsou pro stav clusteru Hadoop klíčové. Na hraničním uzlu se spustí jenom to, co na něj umístíte. Další informace o použití hraničních uzlů najdete v tématu věnovaném použití hraničních uzlů v HDInsightu.

Tip

Když se poprvé připojíte ke službě HDInsight, ve vašem klientovi SSH se může zobrazit upozornění na nemožnost potvrzení pravosti hostitele. Po zobrazení výzvy vyberte yes (ano) a hostitel se přidá na seznam důvěryhodných serverů vašeho klienta SSH.

Pokud jste se dříve připojili k serveru se stejným názvem, může se zobrazit upozornění na neshodu uloženého klíče hostitele s klíčem hostitele serveru. Postup pro odebrání existující položky pro název serveru najdete v dokumentaci k vašemu klientovi SSH.

Klienti SSH

Systémy Linux, Unix a macOS nabízí příkazy ssh a scp. Klient ssh se v systému založeném na Linuxu nebo Unixu běžně používá k vytvoření vzdálené relace příkazového řádku. Klient scp slouží k bezpečnému kopírování souborů mezi vaším klientem a vzdáleným systémem.

Microsoft Windows ve výchozím nastavení neinstaluje žádné klienty SSH. Klienti ssh a scp jsou ve Windows k dispozici prostřednictvím následujících balíčků:

K dispozici je také několik grafických klientů SSH, jako je PuTTY a MobaXterm. I když je možné tyto klienty použít pro připojení k HDInsightu, proces připojení se od použití nástroje ssh liší. Další informace najdete v dokumentaci grafického klienta, který používáte.

Ověřování: Klíče SSH

Klíče SSH používají k ověřování relací SSH kryptografii veřejného klíče. Klíče SSH jsou bezpečnější než hesla a nabízí snadný způsob, jak zabezpečit přístup ke clusteru Hadoop.

Pokud je váš účet SSH zabezpečený pomocí klíče, klient musí při připojení poskytnout odpovídající privátní klíč:

  • Většinu klientů jde nakonfigurovat k použití výchozího klíče. Například klient ssh v prostředích Linux a Unix hledá privátní klíč v ~/.ssh/id_rsa.

  • Můžete zadat cestu k privátnímu klíči. U klienta ssh se k zadání cesty k privátnímu klíči využívá parametr -i. Například ssh -i ~/.ssh/id_rsa sshuser@myedge.mycluster-ssh.azurehdinsight.net.

  • Pokud máte více privátních klíčů, které používáte na různých serverech, zvažte používání nástroje, jako je SSH agent (https://en.wikipedia.org/wiki/Ssh-agent). Nástroj ssh-agent může sloužit k automatickému výběru správného klíče při navazování relace SSH.

Důležité

Pokud privátní klíč zabezpečíte pomocí přístupového hesla, musíte při použití klíče zadat toto heslo. Nástroje, jako je ssh-agent, mohou pro usnadnění práce ukládat hesla do mezipaměti.

Vytvoření páru klíčů SSH

K vytvoření souborů veřejného a privátního klíče použijte příkaz ssh-keygen. Následující příkaz generuje 2048bitový pár klíčů RSA, který je možné použít s HDInsightem:

ssh-keygen -t rsa -b 2048

Během procesu vytváření klíče se zobrazí výzva k zadání informací. třeba kde jsou klíče uložené nebo jestli se má použít přístupové heslo. Po dokončení tohoto procesu se vytvoří dva soubory: veřejný klíč a privátní klíč.

  • Veřejný klíč se používá k vytvoření clusteru HDInsight. Veřejný klíč má příponu .pub.

  • Privátní klíč se používá k ověření vašeho klienta pro cluster HDInsight.

Důležité

Klíče můžete zabezpečit pomocí přístupového hesla. Přístupové heslo je ve skutečnosti heslo k privátnímu klíči. I kdyby někdo získal váš privátní klíč, může ho použít jenom v případě, že má přístupové heslo.

Vytvoření HDInsightu s využitím veřejného klíče

Metoda vytvoření Jak použít veřejný klíč
portál Azure Zrušte zaškrtnutí políčka Použít přihlašovací heslo clusteru pro SSH a jako typ ověřování SSH vyberte Veřejný klíč . Nakonec vyberte soubor veřejného klíče nebo vložte textový obsah souboru do pole veřejného klíče SSH.
SSH public key dialog in HDInsight cluster creation.
Azure PowerShell -SshPublicKey Použijte parametr rutiny New-AzHdinsightCluster a předejte obsah veřejného klíče jako řetězec.
Azure CLI Použijte parametr --sshPublicKey příkazu az hdinsight create a obsah veřejného klíče předejte jako řetězec.
Šablona Resource Manageru Příklad použití klíčů SSH s využití šablony najdete v části věnované nasazení HDInsightu v Linuxu pomocí klíče SSH. Element publicKeys v souboru azuredeploy.json slouží při vytváření clusteru k předání klíčů do Azure.

Ověřování: Heslo

Účty SSH je možné zabezpečit pomocí hesla. Když se připojíte ke službě HDInsight pomocí SSH, zobrazí se výzva k zadání hesla.

Upozorňující

Microsoft nedoporučuje pro SSH používat ověřování heslem. Hesla se dají uhádnout a můžou se stát terčem útoku hrubou silou. Místo toho doporučujeme využívat klíče SSH k ověřování.

Důležité

Platnost hesla účtu SSH vyprší 70 dní po vytvoření clusteru HDInsight. Pokud platnost hesla vyprší, můžete ho změnit s využitím informací v dokumentu Správa HDInsight.

Vytvoření HDInsight s využitím hesla

Metoda vytvoření Jak zadat heslo
portál Azure Ve výchozím nastavení má uživatelský účet SSH stejné heslo jako účet pro přihlášení ke clusteru. Pokud chcete použít jiné heslo, zrušte zaškrtnutí políčka Použít přihlašovací heslo clusteru pro SSH a zadejte heslo do pole pro heslo SSH.
SSH password dialog in HDInsight cluster creation.
Azure PowerShell --SshCredential Použijte parametr rutiny New-AzHdinsightCluster a předejte PSCredential objekt, který obsahuje název a heslo uživatelského účtu SSH.
Azure CLI Použijte parametr --ssh-password příkazu az hdinsight create a zadejte hodnotu hesla.
Šablona Resource Manageru Příklad použití hesla s využitím šablony najdete v části věnované nasazení HDInsightu v Linuxu pomocí hesla SSH. Element linuxOperatingSystemProfile v souboru azuredeploy.json slouží při vytváření clusteru k předání hesla a názvu učtu SSH do Azure.

Změna hesla SSH

Informace o změně hesla uživatelského účtu SSH najdete v dokumentu věnovaném správě HDInsightu v části Změna hesel.

HdInsight připojený k doméně ověřování

Pokud používáte cluster HDInsight připojený k doméně, musíte po připojení k místnímu uživateli SSH použít kinit příkaz. Tento příkaz vás vyzve k zadání uživatele domény a hesla a ověří vaši relaci s doménou Microsoft Entra přidruženou ke clusteru.

Ověřování protokolem Kerberos můžete povolit také na každém uzlu připojeném k doméně (například hlavní uzel, hraniční uzel), aby ssh používal účet domény. To vyžaduje úpravu konfiguračního souboru sshd:

sudo vi /etc/ssh/sshd_config

Zrušte komentář u položky KerberosAuthentication a změňte její hodnotu na yes.

sudo service sshd restart

Pomocí klist příkazu ověřte, jestli ověřování Kerberos proběhlo úspěšně.

Další informace najdete v tématu Konfigurace clusterů HDInsight připojených k doméně.

Připojení k uzlům

Hlavní uzly a hraniční uzel (pokud existuje) jsou přístupné přes internet na portech 22 a 23.

  • Při připojování k hlavním uzlům použijte port 22 pro připojení k primárnímu hlavnímu uzlu a port 23 pro připojení k sekundárnímu hlavnímu uzlu. Plně kvalifikovaný název domény, který byste měli použít, je clustername-ssh.azurehdinsight.net, kde clustername je název vašeho clusteru.

    # 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
    
  • Při připojování k hraničnímu uzlu použijte port 22. Plně kvalifikovaný název domény je edgenodename.clustername-ssh.azurehdinsight.net, kde edgenodename je název zadaný při vytváření hraničního uzlu. clustername je název clusteru.

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

Důležité

V předchozích příkladech se předpokládá, že používáte ověřování heslem nebo že automaticky probíhá ověřování certifikátů. Pokud k ověřování používáte pár klíč-hodnota SSH a certifikát se nepoužívá automaticky, použijte parametr -i k zadání privátního klíče. Například ssh -i ~/.ssh/mykey sshuser@clustername-ssh.azurehdinsight.net.

Po připojení se výzva změní, aby označí uživatelské jméno SSH a uzel, ke kterému jste připojení. Například po připojení k primárnímu hlavnímu uzlu jako sshuser se na příkazovém řádku zobrazí sshuser@<active-headnode-name>:~$.

Připojení k pracovním uzlům a uzlům Apache Zookeeper

Pracovní uzly a uzly Zookeeper nejsou přístupné přímo z internetu. Lze se k nim dostat z hlavních nebo hraničních uzlů clusteru. Toto jsou obecné kroky pro připojení k ostatním uzlům:

  1. Pomocí SSH se připojte k hlavnímu nebo hraničnímu uzlu:

    ssh sshuser@myedge.mycluster-ssh.azurehdinsight.net
    
  2. V rámci připojení SSH k hlavnímu nebo hraničnímu uzlu použijte příkaz ssh pro připojení k pracovnímu uzlu v clusteru:

    ssh sshuser@wn0-myhdi
    

    Pokud chcete načíst seznam názvů uzlů, přečtěte si téma Správa SLUŽBY HDInsight pomocí dokumentu rozhraní REST API Apache Ambari.

Pokud je účet SSH zabezpečený heslem, zadejte toto heslo při připojování.

Pokud je účet SSH zabezpečený klíči SSH, zkontrolujte, jestli je na klientovi zapnuté přesměrování SSH.

Poznámka:

Dalším možným způsobem přímého přístupu ke všem uzlům clusteru je instalace HDInsightu do služby Azure Virtual Network. Potom můžete váš vzdálený počítač připojit ke stejné virtuální síti a získat přímý přístup ke všem uzlům v clusteru.

Další informace najdete v tématu Plánování virtuální sítě pro HDInsight.

Konfigurace přesměrování agenta SSH

Důležité

V následujících krocích se předpokládá využití systému založeného na Linuxu nebo UNIXu a funkce Bash on Windows 10. Pokud tyto kroky pro váš systém nefungují, možná budete nahlédnout do dokumentace k příslušnému klientovi SSH.

  1. V textovém editoru otevřete ~/.ssh/config. Pokud tento soubor neexistuje, můžete ho vytvořit tak, že na příkazovém řádku zadáte touch ~/.ssh/config.

  2. Do souboru config přidejte následující text.

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

    Informace o hostiteli nahraďte adresou uzlu, ke kterému se připojujete pomocí SSH. Předchozí příklad používá hraniční uzel. Tato položka nakonfiguruje přesměrování agenta SSH pro zadaný uzel.

  3. Proveďte test přesměrování agenta SSH pomocí následujícího příkazu z terminálu:

    echo "$SSH_AUTH_SOCK"
    

    Tento příkaz by měl vrátit informace podobné následujícímu textu:

    /tmp/ssh-rfSUL1ldCldQ/agent.1792
    

    Pokud se nic nevrátí, pak ssh-agent neběží.

  4. Jakmile ověříte, že je agent ssh-agent spuštěný, přidejte do agenta privátní klíč SSH následujícím postupem:

    ssh-add ~/.ssh/id_rsa
    

    Pokud je privátní klíč uložen v jiném souboru, nahraďte ~/.ssh/id_rsa cestou k souboru.

  5. Připojte se k hlavním uzlům nebo hraničnímu uzlu clusteru pomocí protokolu SSH. Potom se pomocí příkazu SSH k připojte k pracovnímu uzlu nebo k uzlu Zookeeper. Připojení se naváže s využitím přesměrovaného klíče.

Další kroky