Подключение к HDInsight (Apache Hadoop) с помощью SSH

Сведения о выполнении безопасного подключения к Apache Hadoop в Azure HDInsight с помощью Secure Shell (SSH). Сведения о подключении через виртуальную сеть см. в статье Архитектура виртуальной сети Azure HDInsight. Также см. статью Планирование развертывания виртуальной сети для кластеров Azure HDInsight.

В приведенной ниже таблице содержатся сведения об адресе и порте, которые нужны при подключении к HDInsight с помощью клиента SSH.

Адрес Порт Подключается к...
<clustername>-ssh.azurehdinsight.net 22 Основной головной узел
<clustername>-ssh.azurehdinsight.net 23 Дополнительный головной узел
<edgenodename>.<clustername>-ssh.azurehdinsight.net 22 граничный узел (любой другой тип кластера, если существует граничный узел)

Замените <clustername> именем кластера. Замените <edgenodename> на имя граничного узла.

Мы рекомендуем всегда подключаться к граничному узлу (при наличии его в кластере) с помощью SSH. Службы, размещенные на головных узлах, критически важны для работоспособности Hadoop. Граничный узел выполняет только размещаемые на нем службы. Дополнительные сведения об использовании граничных узловсм. в разделе Доступ к граничному узлу.

Совет

При первом подключении к HDInsight клиент SSH может отобразить предупреждение о том, что не удается установить подлинность узла. При появлении запроса выберите "Да", чтобы добавить узел в список доверенных серверов клиента SSH.

Если вы ранее подключались к серверу с тем же именем, вы можете получить предупреждение о том, что сохраненный ключ узла не совпадает с ключом узла сервера. Обратитесь к документации для вашего клиента SSH, чтобы узнать, как удалить имеющуюся запись для имени сервера.

SSH-клиенты

Системы Linux, Unix и macOS предоставляют команды ssh и scp. Клиент ssh обычно используется для создания удаленного сеанса командной строки с помощью системы на основе Unix или Linux. С помощью scp можно безопасно копировать файлы между клиентской и удаленной системой.

Microsoft Windows по умолчанию не устанавливает клиенты SSH. Клиенты ssh и scp для Windows доступны в следующих пакетах:

Кроме того, существует несколько графических клиентов SSH, например PuTTY и MobaXterm. Хотя эти клиенты можно использовать для подключения к HDInsight, процесс подключения отличается от использования служебной программы ssh. Дополнительные сведения см. в документации по используемому графическому клиенту.

Проверка подлинности с помощью ключей SSH

Ключи SSH применяют шифрование с открытым ключом для проверки подлинности сеансов SSH. В отличие от паролей, они являются более безопасными и предоставляют простой способ защиты доступа к кластеру Hadoop.

Если учетная запись SSH защищена ключом, при подключении клиент должен предоставить соответствующий закрытый ключ.

  • В большинстве клиентов можно настроить использование ключа по умолчанию. Например, клиент ssh будет искать закрытый ключ в ~/.ssh/id_rsa в средах Linux и Unix.

  • Вы можете указать путь к закрытому ключу. В клиенте ssh это можно сделать с помощью параметра -i. Например, ssh -i ~/.ssh/id_rsa sshuser@myedge.mycluster-ssh.azurehdinsight.net.

  • Если у вас есть несколько закрытых ключей для использования на разных серверах, рекомендуем использовать служебные программы, например ssh-agent (https://en.wikipedia.org/wiki/Ssh-agent). Служебную программу ssh-agent можно использовать для автоматического выбора подходящего ключа при установке сеанса SSH.

Важно!

Если закрытый ключ защищен парольной фразой, при использовании ключа ее необходимо будет ввести. Существуют также служебные программы (например, ssh-agent), позволяющие кэшировать пароль.

Создание пары ключей SSH

Чтобы создать файлы открытого и закрытого ключей, используйте команду ssh-keygen. Приведенная ниже команда создает пару 2048-разрядных ключей RSA, которую можно использовать с HDInsight.

ssh-keygen -t rsa -b 2048

Во время создания ключа появится запрос на ввод сведений, например о том, где хранятся ключи и следует ли использовать парольную фразу. После завершения этой процедуры будут созданы два файла: файл открытого ключа и файл закрытого ключа.

  • Открытый ключ используется для создания кластера HDInsight. Этот файл имеет расширение .pub.

  • Закрытый ключ используется для проверки подлинности клиента в кластере HDInsight.

Важно!

Эти ключи можно защитить с помощью парольной фразы. Парольная фраза — это, по сути, пароль закрытого ключа. Даже если кто-то получит ваш закрытый ключ, он не сможет использовать его, не зная парольную фразу.

Создание кластера HDInsight с помощью открытого ключа

Метод создания Использование открытого ключа
портал Azure; Снимите флажок Использовать пароль для входа в кластер для SSH, а в качестве типа проверки подлинности SSH выберите значение Открытый ключ. Наконец, выберите файл открытого ключа или вставьте текстовое содержимое файла в поле Открытый ключ SSH.
SSH public key dialog in HDInsight cluster creation
Azure PowerShell Используя параметр -SshPublicKey командлета New-AzHdinsightCluster, передайте содержимое открытого ключа в виде строки.
Azure CLI Используя параметр --sshPublicKey команды az hdinsight create, передайте содержимое открытого ключа в виде строки.
Шаблон Resource Manager Пример использования ключей SSH с помощью шаблона см. на странице Deploy HDInsight on Linux (w/ Azure Storage, SSH key) (Развертывание HDInsight в Linux с использованием службы хранилища Azure и ключа SSH). Элемент publicKeys в файле azuredeploy.json используется для передачи ключей в Azure при создании кластера.

Проверка подлинности с помощью пароля

Учетные записи SSH можно защитить с помощью пароля. При подключении к HDInsight через SSH вам будет предложено ввести пароль.

Предупреждение

Мы не советуем использовать такой метод аутентификации для SSH. Пароли можно угадать. К тому же они подвержены атакам методом подбора. Вместо этого рекомендуется использовать проверку подлинности с помощью ключей SSH.

Важно!

Срок действия пароля учетной записи SSH истекает через 70 дней после создания кластера HDInsight. Если срок действия пароля истек, его можно изменить с помощью инструкций в документе по управлению HDInsight.

Создание кластера HDInsight с использованием пароля

Метод создания Указание пароля
портал Azure; По умолчанию учетная запись пользователя SSH содержит тот же пароль, что и учетная запись входа кластера. Чтобы использовать другой пароль, снимите флажок Использовать пароль для входа в кластер для SSH, а затем введите пароль в поле Пароль SSH.
SSH password dialog in HDInsight cluster creation
Azure PowerShell Используя параметр --SshCredential командлета New-AzHdinsightCluster, передайте объект PSCredential, содержащий имя учетной записи пользователя SSH и пароль.
Azure CLI Используя параметр --ssh-password команды az hdinsight create, укажите значение пароля.
Шаблон Resource Manager Пример использования пароля с помощью шаблона см. на странице Deploy HDInsight cluster with Storage and SSH password (Развертывание HDInsight с использованием службы хранилища и пароля SSH). Элемент linuxOperatingSystemProfile в файле azuredeploy.json используется для передачи имени учетной записи SSH и пароля в Azure при создании кластера.

Изменение пароля SSH

Дополнительные сведения об изменении пароля учетной записи пользователя SSH см. в разделе Изменение паролей статьи Управление кластерами Hadoop в HDInsight с помощью портала Azure.

Проверка подлинности при использовании присоединенного к домену кластера HDInsight

Если вы используете присоединенный к домену кластер HDInsight, после подключения по протоколу SSH c локальным пользователем необходимо выполнить команду kinit. Эта команда запрашивает имя и пароль пользователя домена и проверяет подлинность сеанса с помощью домена Azure Active Directory, связанного с кластером.

Можно также включить проверку подлинности Kerberos на каждом узле, присоединенном к домену (например, головном узле, граничном узле), чтобы подключиться по протоколу SSH с помощью учетной записи домена. Для этого измените файл конфигурации sshd:

sudo vi /etc/ssh/sshd_config

Раскомментируйте и замените KerberosAuthentication на yes

sudo service sshd restart

Проверьте успешное выполнение проверки подлинности Kerberos с помощью команды klist.

Дополнительные сведения см. в статье Настройка присоединенных к домену кластеров HDInsight (предварительная версия).

Подключение к узлам

К головному узлу и граничному узлу (если он есть) можно подключиться по Интернету через порты 22 и 23.

  • При подключении к головному узлу используйте порт 22, чтобы подключиться к первичному головному узлу, и порт 23, чтобы подключиться к вторичному головному узлу. Используйте полное доменное имя clustername-ssh.azurehdinsight.net, где clustername — имя кластера.

    # 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
    
  • Чтобы подключиться к граничному узлу, используйте порт 22. Полное доменное имя — edgenodename.clustername-ssh.azurehdinsight.net, где edgenodename — это имя, которое вы указали при создании граничного узла. clustername — это имя кластера.

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

Важно!

В предыдущих примерах предполагается, что вы используете аутентификацию на основе пароля или что аутентификация на основе сертификата выполняется автоматически. Если вы используете пару ключей SSH для проверки подлинности и сертификат не используется автоматически, укажите закрытый ключ с помощью параметра -i. Например, ssh -i ~/.ssh/mykey sshuser@clustername-ssh.azurehdinsight.net.

После подключения командная строка изменится и в ней отобразится имя пользователя SSH и узел, к которому вы подключены. Например, если к первичному головному узлу подключается пользователь sshuser, командная строка выглядит так: sshuser@<active-headnode-name>:~$.

Подключение к рабочим узлам и узлам Apache Zookeeper

Рабочие узлы и узлы Zookeeper недоступны напрямую через Интернет, но к ним можно получить доступ с головного или граничного узла кластера. Шаги ниже описывают общую процедуру подключения к другим узлам.

  1. Используйте SSH, чтобы подключиться к головному или граничному узлу:

    ssh sshuser@myedge.mycluster-ssh.azurehdinsight.net
    
  2. После подключения по протоколу SSH используйте команду ssh, чтобы соединиться с рабочим узлом в кластере:

    ssh sshuser@wn0-myhdi
    

    Чтобы получить список имен узлов, обратитесь к разделу Пример. Получение полного доменного имени для узлов кластера.

Если учетная запись SSH защищена паролем, при подключении введите пароль.

Если она защищена ключами SSH, убедитесь, что на клиентском компьютере включено перенаправление SSH.

Примечание

Другой способ получить прямой доступ ко всем узлам кластера — установить HDInsight в виртуальной сети Azure. Затем к той же виртуальной сети можно присоединить удаленный компьютер и получить прямой доступ ко всем узлам кластера.

Дополнительные сведения см. в статье Планирование развертывания виртуальной сети для кластеров Azure HDInsight.

Настройка перенаправления SSH-агента

Важно!

При описании шагов ниже предполагается использование системы под управлением Linux или UNIX, а также Bash Windows 10. Если выполнение этих шагов в вашей системе не дает результатов, см. документацию по соответствующему SSH-клиенту.

  1. Откройте в текстовом редакторе файл ~/.ssh/config. Если этот файл отсутствует, его можно создать. Для этого в командной строке введите команду touch ~/.ssh/config.

  2. Добавьте следующий текст в файл config.

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

    Замените сведения об узле на адрес узла, к которому вы подключаетесь с помощью SSH. В предыдущем примере используется граничный узел. Эта запись позволяет настроить перенаправление агента SSH для указанного узла.

  3. Чтобы проверить перенаправление агента SSH, выполните следующую команду в терминале:

    echo "$SSH_AUTH_SOCK"
    

    Эта команда возвращает сведения аналогичные следующим:

    /tmp/ssh-rfSUL1ldCldQ/agent.1792
    

    Если сведения не возвращаются, это значит, что ssh-agent не работает. Чтобы получить сведения о скриптах запуска агентов, см. документ по использованию агента SSH с SSH (http://mah.everybody.org/docs/ssh) или документацию по соответствующему SSH-клиенту.

  4. Убедившись в запуске агента SSH, используйте следующую команду, чтобы добавить закрытый ключ SSH для агента:

    ssh-add ~/.ssh/id_rsa
    

    Если закрытый ключ хранится в другом файле, замените ~/.ssh/id_rsa на путь к файлу.

  5. Подключитесь к граничному или головному узлу кластера с помощью SSH. Затем воспользуйтесь командой SSH для подключения к рабочему узлу или узлу Zookeeper. Подключение устанавливается с использованием перенаправленного ключа.

Дальнейшие действия