Připojení k HDInsight (Apache Hadoop) pomocí SSHConnect to HDInsight (Apache Hadoop) using SSH

Naučte se používat Secure Shell (SSH) k zabezpečenému připojení Apache Hadoop v Azure HDInsight.Learn how to use Secure Shell (SSH) to securely connect to Apache Hadoop on Azure HDInsight. Informace o připojení přes virtuální síť najdete v tématu Architektura virtuální sítě Azure HDInsight a naplánování nasazení virtuální sítě pro clustery Azure HDInsight.For information on connecting through a virtual network, see Azure HDInsight virtual network architecture and Plan a virtual network deployment for Azure HDInsight clusters.

Následující tabulka obsahuje informace o adrese a portu potřebné pro připojení ke službě HDInsight pomocí klienta SSH:The following table contains the address and port information needed when connecting to HDInsight using an SSH client:

AdresaAddress PortPort Připojení...Connects to...
<clustername>-ssh.azurehdinsight.net 2222 Primární hlavní uzelPrimary headnode
<clustername>-ssh.azurehdinsight.net 2323 Sekundární hlavní uzelSecondary headnode
<clustername>-ed-ssh.azurehdinsight.net 2222 Hraniční uzel (Služby ML v HDInsightu)Edge node (ML Services on HDInsight)
<edgenodename>.<clustername>-ssh.azurehdinsight.net 2222 Hraniční uzel (všechny ostatní typy clusteru, pokud hraniční uzel existuje)Edge node (any other cluster type, if an edge node exists)

Nahraďte <clustername> názvem svého clusteru.Replace <clustername> with the name of your cluster. Parametr <edgenodename> nahraďte názvem hraničního uzlu.Replace <edgenodename> with the name of the edge node.

Pokud cluster obsahuje hraniční uzel, doporučujeme vám připojovat se k hraničnímu uzlu vždy pomocí příkazu SSH.If your cluster contains an edge node, we recommend that you always connect to the edge node using SSH. Hlavní uzly hostují služby, které jsou pro stav clusteru Hadoop klíčové.The head nodes host services that are critical to the health of Hadoop. Na hraničním uzlu se spustí jenom to, co na něj umístíte.The edge node runs only what you put on it. Další informace o použití hraničních uzlů najdete v tématu věnovaném použití hraničních uzlů v HDInsightu.For more information on using edge nodes, see Use edge nodes in HDInsight.

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.When you first connect to HDInsight, your SSH client may display a warning that the authenticity of the host can't be established. Po zobrazení výzvy vyberte yes (ano) a hostitel se přidá na seznam důvěryhodných serverů vašeho klienta SSH.When prompted select 'yes' to add the host to your SSH client's trusted server list.

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.If you have previously connected to a server with the same name, you may receive a warning that the stored host key does not match the host key of the server. Postup pro odebrání existující položky pro název serveru najdete v dokumentaci k vašemu klientovi SSH.Consult the documentation for your SSH client on how to remove the existing entry for the server name.

Klienti SSHSSH clients

Systémy Linux, Unix a macOS nabízí příkazy ssh a scp.Linux, Unix, and macOS systems provide the ssh and scp commands. 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.The ssh client is commonly used to create a remote command-line session with a Linux or Unix-based system. Klient scp slouží k bezpečnému kopírování souborů mezi vaším klientem a vzdáleným systémem.The scp client is used to securely copy files between your client and the remote system.

Microsoft Windows ve výchozím nastavení neinstaluje žádné klienty SSH.Microsoft Windows does not install any SSH clients by default. Klienti ssh a scp jsou ve Windows k dispozici prostřednictvím následujících balíčků:The ssh and scp clients are available for Windows through the following packages:

K dispozici je také několik grafických klientů SSH, jako jsou například výstupy a MobaXterm.There are also several graphical SSH clients, such as PuTTY and 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ší.While these clients can be used to connect to HDInsight, the process of connecting is different than using the ssh utility. Další informace najdete v dokumentaci ke grafickému klientu, který používáte.For more information, see the documentation of the graphical client you are using.

Přihlašovací Klíče SSHAuthentication: SSH Keys

Klíče SSH používají kryptografii s veřejným klíčem k ověřování relací SSH.SSH keys use public-key cryptography to authenticate SSH sessions. Klíče SSH jsou bezpečnější než hesla a nabízí snadný způsob, jak zabezpečit přístup ke clusteru Hadoop.SSH keys are more secure than passwords, and provide an easy way to secure access to your Hadoop cluster.

Pokud je váš účet SSH zabezpečený pomocí klíče, klient musí při připojení poskytnout odpovídající privátní klíč:If your SSH account is secured using a key, the client must provide the matching private key when you connect:

  • Většinu klientů jde nakonfigurovat k použití výchozího klíče.Most clients can be configured to use a default key. Například klient ssh v prostředích Linux a Unix hledá privátní klíč v ~/.ssh/id_rsa.For example, the ssh client looks for a private key at ~/.ssh/id_rsa on Linux and Unix environments.

  • Můžete zadat cestu k privátnímu klíči.You can specify the path to a private key. U klienta ssh se k zadání cesty k privátnímu klíči využívá parametr -i.With the ssh client, the -i parameter is used to specify the path to private key. Například, ssh -i ~/.ssh/id_rsa sshuser@myedge.mycluster-ssh.azurehdinsight.net.For example, 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).If you have multiple private keys for use with different servers, consider using a utility such as 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.The ssh-agent utility can be used to automatically select the key to use when establishing an SSH session.

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.If you secure your private key with a passphrase, you must enter the passphrase when using the key. Nástroje, jako je ssh-agent, mohou pro usnadnění práce ukládat hesla do mezipaměti.Utilities such as ssh-agent can cache the password for your convenience.

Vytvoření páru klíčů SSHCreate an SSH key pair

K vytvoření souborů veřejného a privátního klíče použijte příkaz ssh-keygen.Use the ssh-keygen command to create public and private key files. Následující příkaz generuje 2048bitový pár klíčů RSA, který je možné použít s HDInsightem:The following command generates a 2048-bit RSA key pair that can be used with HDInsight:

ssh-keygen -t rsa -b 2048

Během procesu vytváření klíčů se zobrazí výzva k zadání informací,You are prompted for information during the key creation process. třeba kde jsou klíče uložené nebo jestli se má použít přístupové heslo.For example, where the keys are stored or whether to use a passphrase. Po dokončení tohoto procesu se vytvoří dva soubory: veřejný klíč a privátní klíč.After the process completes, two files are created; a public key and a private key.

  • Veřejný klíč se používá k vytvoření clusteru HDInsight.The public key is used to create an HDInsight cluster. Veřejný klíč má příponu .pub.The public key has an extension of .pub.

  • Privátní klíč se používá k ověření vašeho klienta pro cluster HDInsight.The private key is used to authenticate your client to the HDInsight cluster.

Důležité

Klíče můžete zabezpečit pomocí přístupového hesla.You can secure your keys using a passphrase. Přístupové heslo je ve skutečnosti heslo k privátnímu klíči.A passphrase is effectively a password on your private key. I kdyby někdo získal váš privátní klíč, může ho použít jenom v případě, že má přístupové heslo.Even if someone obtains your private key, they must have the passphrase to use the key.

Vytvoření HDInsightu s využitím veřejného klíčeCreate HDInsight using the public key

Metoda vytvořeníCreation method Jak použít veřejný klíčHow to use the public key
portál AzureAzure portal Zrušte zaškrtnutí políčka Použít stejné heslo jako pro přihlášení ke clusteru a potom jako typ ověřování SSH vyberte Veřejný klíč.Uncheck Use same password as cluster login, and then select Public Key as the SSH authentication type. Nakonec vyberte soubor veřejného klíče nebo vložte testový obsah tohoto souboru do pole Veřejný klíč SSH.Finally, select the public key file or paste the text contents of the file in the SSH public key field.
Dialogové okno Veřejný klíč SSH při vytváření clusteru HDInsightSSH public key dialog in HDInsight cluster creation
Azure PowerShellAzure PowerShell Použijte parametr rutiny New-AzHdinsightCluster a obsah veřejného klíče předejte jako řetězec. -SshPublicKeyUse the -SshPublicKey parameter of the New-AzHdinsightCluster cmdlet and pass the contents of the public key as a string.
Azure CLIAzure CLI Použijte parametr příkazu AZ HDInsight Create a obsah veřejného klíče předejte jako řetězec. --sshPublicKeyUse the --sshPublicKey parameter of the az hdinsight create command and pass the contents of the public key as a string.
Šablona Resource ManageruResource Manager Template Příklad použití klíčů SSH s využití šablony najdete v části věnované nasazení HDInsightu v Linuxu pomocí klíče SSH.For an example of using SSH keys with a template, see Deploy HDInsight on Linux with SSH key. Element publicKeys v souboru azuredeploy.json slouží při vytváření clusteru k předání klíčů do Azure.The publicKeys element in the azuredeploy.json file is used to pass the keys to Azure when creating the cluster.

Přihlašovací HesloAuthentication: Password

Účty SSH je možné zabezpečit pomocí hesla.SSH accounts can be secured using a password. Když se připojíte k HDInsightu pomocí SSH, zobrazí se výzva k zadání hesla.When you connect to HDInsight using SSH, you are prompted to enter the password.

Varování

Microsoft nedoporučuje pro SSH používat ověřování heslem.Microsoft does not recommend using password authentication for SSH. Hesla se dají uhádnout a můžou se stát terčem útoku hrubou silou.Passwords can be guessed and are vulnerable to brute force attacks. Místo toho doporučujeme využívat klíče SSH k ověřování.Instead, we recommend that you use SSH keys for authentication.

Důležité

Platnost hesla účtu SSH vyprší 70 dní po vytvoření clusteru HDInsight.The SSH account password expires 70 days after the HDInsight cluster is created. Pokud platnost hesla vyprší, můžete ho změnit pomocí informací v dokumentu Správa HDInsight.If your password expires, you can change it using the information in the Manage HDInsight document.

Vytvoření HDInsight s využitím heslaCreate HDInsight using a password

Metoda vytvořeníCreation method Jak zadat hesloHow to specify the password
portál AzureAzure portal Ve výchozím nastavení má uživatelský účet SSH stejné heslo jako účet pro přihlášení ke clusteru.By default, the SSH user account has the same password as the cluster login account. Pokud chcete použít jiné heslo, zrušte zaškrtnutí políčka Použít stejné heslo jako pro přihlášení ke clusteru a potom do pole Heslo SSH zadejte požadované heslo.To use a different password, uncheck Use same password as cluster login, and then enter the password in the SSH password field.
Dialogové okno Heslo SSH při vytváření clusteru HDInsightSSH password dialog in HDInsight cluster creation
Azure PowerShellAzure PowerShell Použijte parametr rutiny New-AzHdinsightCluster a předejte objekt,kterýobsahujenázevaheslouživatelskéhoúčtuSSH.PSCredential --SshCredentialUse the --SshCredential parameter of the New-AzHdinsightCluster cmdlet and pass a PSCredential object that contains the SSH user account name and password.
Azure CLIAzure CLI Použijte parametr příkazu AZ HDInsight Create a zadejte hodnotu pro heslo. --sshPasswordUse the --sshPassword parameter of the az hdinsight create command and provide the password value.
Šablona Resource ManageruResource Manager Template Příklad použití hesla s využitím šablony najdete v části věnované nasazení HDInsightu v Linuxu pomocí hesla SSH.For an example of using a password with a template, see Deploy HDInsight on Linux with SSH password. 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.The linuxOperatingSystemProfile element in the azuredeploy.json file is used to pass the SSH account name and password to Azure when creating the cluster.

Změna hesla SSHChange the SSH password

Informace o změně hesla uživatelského účtu SSH najdete v dokumentu věnovaném správě HDInsightu v části Změna hesel.For information on changing the SSH user account password, see the Change passwords section of the Manage HDInsight document.

Přihlašovací HDInsight připojené k doméněAuthentication: Domain-joined HDInsight

Pokud používáte cluster HDInsight připojený k doméně, musíte po připojení pomocí místního uživatele protokolu SSH použít příkaz kinit.If you are using a domain-joined HDInsight cluster, you must use the kinit command after connecting with SSH local user. Tento příkaz vás vyzve k zadání hesla a uživatele domény a ověří platnost vaší relace s využitím domény služby Azure Active Directory přidružené ke clusteru.This command prompts you for a domain user and password, and authenticates your session with the Azure Active Directory domain associated with the cluster.

Ověřování protokolem Kerberos můžete zapnout taky na všech uzlech připojených k doméně (například hlavní uzel, hraniční uzel), aby se SSH používal pomocí účtu domény.You can also enable Kerberos Authentication on each domain joined node (for example, head node, edge node) in order to ssh using the domain account. To vyžaduje úpravu konfiguračního souboru sshd:To do this edit sshd config file:

sudo vi /etc/ssh/sshd_config

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

sudo service sshd restart

Kdykoli budete potřebovat ověřit, zda se ověřování Kerberos zdařilo, použijte příkaz klist.At any time, in order to verify whether the Kerberos authentication was successful or not, use klist command.

Další informace najdete v tématu Konfigurace clusterů HDInsight připojených k doméně.For more information, see Configure domain-joined HDInsight.

Připojení k uzlůmConnect to nodes

Hlavní uzly a hraniční uzel (pokud existuje) jsou přístupné přes internet na portech 22 a 23.The head nodes and edge node (if there is one) can be accessed over the internet on ports 22 and 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.When connecting to the head nodes, use port 22 to connect to the primary head node and port 23 to connect to the secondary head node. 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.The fully qualified domain name to use is clustername-ssh.azurehdinsight.net, where clustername is the name of your 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
    
  • Při připojování k hraničnímu uzlu použijte port 22.When connecting to the edge node, use 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.The fully qualified domain name is edgenodename.clustername-ssh.azurehdinsight.net, where edgenodename is a name you provided when creating the edge node. clustername je název clusteru.clustername is the name of the cluster.

    # 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ů.The previous examples assume that you are using password authentication, or that certificate authentication is occurring automatically. 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.If you use an SSH key-pair for authentication, and the certificate is not used automatically, use the -i parameter to specify the private key. Například, ssh -i ~/.ssh/mykey sshuser@clustername-ssh.azurehdinsight.net.For example, ssh -i ~/.ssh/mykey sshuser@clustername-ssh.azurehdinsight.net.

Jakmile budete připojeni, příkazový řádek se změní a zobrazí uživatelské jméno SSH a uzel, ke kterému jste připojeni.Once connected, the prompt changes to indicate the SSH user name and the node you are connected to. Například po připojení k primárnímu hlavnímu uzlu jako sshuser se na příkazovém řádku zobrazí sshuser@hn0-clustername:~$.For example, when connected to the primary head node as sshuser, the prompt is sshuser@hn0-clustername:~$.

Připojení k uzlům pracovních procesů a Apache ZookeeperConnect to worker and Apache Zookeeper nodes

Pracovní uzly a uzly Zookeeper nejsou přístupné přímo z internetu.The worker nodes and Zookeeper nodes are not directly accessible from the internet. Lze se k nim dostat z hlavních nebo hraničních uzlů clusteru.They can be accessed from the cluster head nodes or edge nodes. Toto jsou obecné kroky pro připojení k ostatním uzlům:The following are the general steps to connect to other nodes:

  1. Pomocí SSH se připojte k hlavnímu nebo hraničnímu uzlu:Use SSH to connect to a head or edge node:

     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:From the SSH connection to the head or edge node, use the ssh command to connect to a worker node in the cluster:

     ```bash
     ssh sshuser@wn0-myhdi
     ```
    

    Pokud chcete načíst seznam názvů uzlů, přečtěte si téma Správa HDInsight pomocí dokumentu REST API Apache Ambari .To retrieve a list of the node names, see the Manage HDInsight by using the Apache Ambari REST API document.

Pokud je účet SSH zabezpečený heslem, zadejte toto heslo při připojování.If the SSH account is secured using a password, enter the password when connecting.

Pokud je účet SSH zabezpečený klíči SSH, zkontrolujte, jestli je na klientovi zapnuté přesměrování SSH.If the SSH account is secured using SSH keys, make sure that SSH forwarding is enabled on the client.

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.Another way to directly access all nodes in the cluster is to install HDInsight into an 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.Then, you can join your remote machine to the same virtual network and directly access all nodes in the cluster.

Další informace najdete v tématu plánování virtuální sítě pro HDInsight.For more information, see Plan a virtual network for HDInsight.

Konfigurace přesměrování agenta SSHConfigure SSH agent forwarding

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.The following steps assume a Linux or UNIX-based system, and work with 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.If these steps do not work for your system, you may need to consult the documentation for your SSH client.

  1. V textovém editoru otevřete ~/.ssh/config.Using a text editor, open ~/.ssh/config. Pokud tento soubor neexistuje, můžete ho vytvořit tak, že na příkazovém řádku zadáte touch ~/.ssh/config.If this file doesn't exist, you can create it by entering touch ~/.ssh/config at a command line.

  2. Do souboru config přidejte následující text.Add the following text to the config file.

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

    Informace o hostiteli nahraďte adresou uzlu, ke kterému se připojujete pomocí SSH.Replace the Host information with the address of the node you connect to using SSH. Předchozí příklad používá hraniční uzel.The previous example uses the edge node. Tato položka nakonfiguruje přesměrování agenta SSH pro zadaný uzel.This entry configures SSH agent forwarding for the specified node.

  3. Proveďte test přesměrování agenta SSH pomocí následujícího příkazu z terminálu:Test SSH agent forwarding by using the following command from the terminal:

     echo "$SSH_AUTH_SOCK"
    

    Tento příkaz by měl vrátit informace podobné následujícímu textu:This command returns information similar to the following text:

     /tmp/ssh-rfSUL1ldCldQ/agent.1792
    

    Když se nic nevrátí, znamená to, že nástroj ssh-agent není spuštěný.If nothing is returned, then ssh-agent is not running. Další informace o spouštěcích skriptech agenta najdete v tématu Použití nástroje SSH agent s SSH (http://mah.everybody.org/docs/ssh) nebo v dokumentaci ke klientovi SSH.For more information, see the agent startup scripts information at Using ssh-agent with ssh (http://mah.everybody.org/docs/ssh) or consult your SSH client documentation.

  4. Jakmile si ověříte, že se ssh-agent spustil, podle následujícího postupu přidejte svůj privátní klíč SSH k agentovi:Once you have verified that ssh-agent is running, use the following to add your SSH private key to the agent:

     ssh-add ~/.ssh/id_rsa
    

    Pokud je privátní klíč uložen v jiném souboru, nahraďte ~/.ssh/id_rsa cestou k souboru.If your private key is stored in a different file, replace ~/.ssh/id_rsa with the path to the file.

  5. Připojte se k hlavním uzlům nebo hraničnímu uzlu clusteru pomocí protokolu SSH.Connect to the cluster edge node or head nodes using SSH. Potom se pomocí příkazu SSH k připojte k pracovnímu uzlu nebo k uzlu Zookeeper.Then use the SSH command to connect to a worker or zookeeper node. Připojení se naváže s využitím přesměrovaného klíče.The connection is established using the forwarded key.

Kopírování souborůCopy files

Ke kopírování souborů na jednotlivé uzly clusteru nebo z nich je možné použít nástroj scp.The scp utility can be used to copy files to and from individual nodes in the cluster. Například následující příkaz zkopíruje soubor test.txt z místního systému na primární hlavní uzel:For example, the following command copies the test.txt directory from the local system to the primary head node:

scp test.txt sshuser@clustername-ssh.azurehdinsight.net:

Protože po : není zadaná žádná cesta, soubor se umístí do domovského adresáře sshuser.Since no path is specified after the :, the file is placed in the sshuser home directory.

Následující příklad zkopíruje soubor test.txt z domovského adresáře sshuser na primárním hlavním uzlu do místního systému:The following example copies the test.txt file from the sshuser home directory on the primary head node to the local system:

scp sshuser@clustername-ssh.azurehdinsight.net:test.txt .

Důležité

Nástroj scp má přístup pouze k systému souborů jednotlivých uzlů v rámci clusteru.scp can only access the file system of individual nodes within the cluster. Není možné ho použít pro přístup k datům v úložišti clusteru kompatibilním se systémem HDFS.It cannot be used to access data in the HDFS-compatible storage for the cluster.

Pokud potřebujete nahrát prostředek pro použití z relace SSH, použijte scp.Use scp when you need to upload a resource for use from an SSH session. Nahrajte například skript Pythonu a potom tento skript spusťte z relace SSH.For example, upload a Python script and then run the script from an SSH session.

Informace o přímém načítání dat do úložiště kompatibilního se systémem HDFS najdete v následujících dokumentech:For information on directly loading data into the HDFS-compatible storage, see the following documents:

Další postupNext steps