One place for hosting & domains

      Настройка ключей SSH в Debian 9


      Введение

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

      В этом обучающем модуле мы расскажем о настройке ключей SSH для базовой версии Debian 9. Ключи SSH обеспечивают удобный и защищенный способ входа на сервер, и их рекомендуется использовать для всех пользователей.

      Шаг 1 — Создание пары ключей RSA

      Первый шаг — создание пары ключей на клиентской системе (обычно на вашем компьютере):

      По умолчанию команда ssh-keygen создает пару 2048-битных ключей RSA. Этот уровень защиты достаточен для большинства случаев (но при желании вы можете использовать флаг -b 4096, чтобы создать более надежный 4096-битный ключ).

      Восле ввода команды вы должны увидеть следующее:

      Output

      Generating public/private rsa key pair. Enter file in which to save the key (/your_home/.ssh/id_rsa):

      Нажмите ENTER, чтобы сохранить пару ключей в подкаталог .ssh/ домашнего каталога или укажите альтернативный путь.

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

      Output

      /home/your_home/.ssh/id_rsa already exists. Overwrite (y/n)?

      Если вы решите перезаписать ключ на диске, вы больше не сможете выполнять аутентификацию с помощью предыдущего ключа. Будьте осторожны при выборе варианта yes, потому что этот процесс уничтожает ключи, и его нельзя отменить.

      Затем вы должны увидеть следующую строку:

      Output

      Enter passphrase (empty for no passphrase):

      Здесь вы можете ввести защищенный пароль, что настоятельно рекомендуется сделать. Пароль добавляет дополнительный уровень безопасности для защиты от входа в систему несанкционированных пользователей. Дополнительную информацию о безопасности можно найти в нашем обучающем модуле Настройка аутентификации на базе ключей SSH на сервере Linux.

      Вы должны увидеть следующий результат:

      Output

      Your identification has been saved in /your_home/.ssh/id_rsa. Your public key has been saved in /your_home/.ssh/id_rsa.pub. The key fingerprint is: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host The key's randomart image is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+

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

      Шаг 2 — Копирование открытого ключа на сервер Debian

      Самый быстрый способ скопировать открытый ключ на хост Debian — использовать утилиту ssh-copy-id. Это самый простой способ, поэтому его рекомендуется использовать, если он доступен. Если на клиентском компьютере нет утилиты ssh-copy-id, вы можете использовать один из двух альтернативных методов, описанных в этом разделе (копирование через SSH на базе пароля или копирование ключа вручную).

      Копирование открытого ключа с помощью утилиты ssh-copy-id

      Утилита ssh-copy-id по умолчанию входит в состав многих операционных систем, поэтому она может быть доступна на вашем локальном компьютере. Чтобы этот метод сработал, вы должны уже настроить защищенный паролем доступ к серверу через SSH.

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

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

      • ssh-copy-id username@remote_host

      Вы можете увидеть следующее сообщение:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Это означает, что ваш локальный компьютер не распознает удаленный хост. Это произойдет при первом подключении к новому хосту. Введите «yes» и нажмите ENTER, чтобы продолжить.

      Затем утилита проведет сканирование локальной учетной записи для поиска ранее созданного ключа id_rsa.pub. Когда ключ будет найден, вам будет предложено ввести пароль учетной записи удаленного пользователя:

      Output

      /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys username@203.0.113.1's password:

      Введите пароль (для безопасности вводимый текст не будет отображаться) и нажмите ENTER. Утилита подключится к учетной записи на удаленном хосте, используя указанный вами пароль. Затем содержимое ключа ~/.ssh/id_rsa.pub будет скопировано в основной каталог ~/.ssh удаленной учетной записи в файл с именем authorized_keys.

      Вы должны увидеть следующий результат:

      Output

      Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@203.0.113.1'" and check to make sure that only the key(s) you wanted were added.

      Теперь ваш ключ id_rsa.pub key выгружен в удаленную учетную запись. Вы можете переходить к шагу 3.

      Копирование открытого ключа с помощью SSH

      Если у вас нет ssh-copy-id, но вы активировали защищенный паролем доступ к учетной записи на вашем сервере через SSH, вы можете выгрузить ключи с помощью стандартного метода SSH.

      Для этого нужно использовать команду cat, чтобы прочитать содержимое открытого ключа SSH на локальном компьютере и передать его через соединение SSH на удаленный сервер.

      Также мы можем убедиться, что каталог ~/.ssh и имеет правильные разрешения для используемой нами учетной записи.

      Мы можем вывести переданное содержимое в файл с именем authorized_keys в этом каталоге. Мы используем символ перенаправления >>, чтобы дополнять содержимое, а не заменять его. Это позволяет добавлять ключи без уничтожения ранее добавленных ключей.

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

      • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

      Вы можете увидеть следующее сообщение:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Это означает, что ваш локальный компьютер не распознает удаленный хост. Это произойдет при первом подключении к новому хосту. Введите «yes» и нажмите ENTER, чтобы продолжить.

      После этого вам нужно будет ввести пароль учетной записи удаленного пользователя:

      Output

      username@203.0.113.1's password:

      После ввода пароля содержимое ключа id_rsa.pub будет скопировано в конец файла authorized_keys учетной записи удаленного пользователя. Если операция выполнена успешно, переходите к шагу 3.

      Копирование открытого ключа вручную

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

      Мы вручную добавим содержимое вашего файла id_rsa.pub в файл ~/.ssh/authorized_keys на удаленном компьютере.

      Чтобы вывести содержимое ключа id_rsa.pub, введите на локальном компьютере следующую команду:

      Вы увидите содержимое ключа, которое должно выглядеть следующим образом:

      Output

      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

      Получите доступ к удаленному хосту с использованием любого доступного метода.

      После получения доступа к учетной записи на удаленном сервере убедитесь, что каталог ~/.ssh существует. При необходимости эта команда создаст каталог, а если каталог уже существует, команда ничего не сделает.

      Теперь вы можете создать или изменить файл authorized_keys в этом каталоге. Вы можете добавить содержимое файла id_rsa.pub в конец файла authorized_keys и при необходимости создать его с помощью этой команды:

      • echo public_key_string >> ~/.ssh/authorized_keys

      В вышеуказанной команде замените public_key_string результатами команды cat ~/.ssh/id_rsa.pub, выполненной на локальном компьютере. Она должна начинаться с ssh-rsa AAAA....

      Наконец, нужно убедиться, что каталог ~/.ssh и файл authorized_keys имеют соответствующий набор разрешений:

      При этом будут рекурсивно удалены все разрешения «group» и «other» для каталога ~/.ssh/.

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

      • chown -R sammy:sammy ~/.ssh

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

      Теперь мы можем попробовать настроить аутентификацию без пароля на нашем сервере Debian.

      Шаг 3 — Аутентификация на сервере Debian с помощью ключей SSH

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

      Базовый процесс выглядит аналогично:

      Если вы подключаетесь к этому хосту первый раз (если вы используете указанный выше последний метод), вы сможете увидеть следующее:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Это означает, что ваш локальный компьютер не распознает удаленный хост. Введите «yes» и нажмите ENTER, чтобы продолжить.

      Если вы не указывали пароль для своего закрытого ключа, вы войдете в систему немедленно. Если вы указали пароль закрытого ключа при создании ключа, вам будет предложено ввести его сейчас (для безопасности вводимые символы не будут отображаться в сеансе терминала). После аутентификации в оболочке откроется новый сеанс с настроенной учетной записью на сервере Debian.

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

      Шаг 4 — Отключение аутентификации на сервере с помощью пароля

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

      Прежде чем выполнять описанные в настоящем разделе шаги, убедитесь, что вы настроили аутентификацию на базе ключей SSH для учетной записи root на этом сервере, или (предпочтительно) вы настроили аутентификацию на базе ключей SSH для учетной записи сервера без привилегий root и с привилегиями sudo. На этом шаге вход в систему по паролю будет заблокирован, поэтому очень важно сохранить возможность доступа с правами администратора.

      Подтвердив права администратора для удаленной учетной записи, выполните вход на удаленный сервер с помощью ключей SSH как пользователь с привилегиями root или как пользователь с привилегиями sudo. Затем откройте файл конфигурации демона SSH:

      • sudo nano /etc/ssh/sshd_config

      Найдите в файле директиву PasswordAuthentication. Она может быть помечена как комментарий. Удалите символ комментария в начале строки и установите значение «no». После этого вы не сможете выполнять вход в систему через SSH с использованием паролей учетной записи:

      /etc/ssh/sshd_config

      ...
      PasswordAuthentication no
      ...
      

      Сохраните и закройте файл, нажав CTRL + X, затем нажмите Y для подтверждения сохранения файла, а затем нажмите ENTER для выхода из nano. Для фактического внесения этих изменений нужно перезапустить службу sshd:

      • sudo systemctl restart ssh

      В качестве меры предосторожности откройте новое окно терминала и проверьте работу службы SSH, прежде чем закрывать этот сеанс:

      После проверки работы службы SSH вы сможете безопасно закрыть все текущие сеансы сервера.

      Теперь демон SSH на вашем сервере Debian будет реагировать только на ключи SSH. Аутентификация на базе паролей успешно отключена.

      Заключение

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

      Если вы хотите узнать больше о работе с SSH, посмотрите наше Руководство по основам SSH.



      Source link

      Настройка ключей SSH в Ubuntu 16.04


      Введение

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

      В этом обучающем модуле мы расскажем о настройке ключей SSH для базовой версии Ubuntu 16.04. Ключи SSH обеспечивают удобный и защищенный способ входа на сервер, и их рекомендуется использовать для всех пользователей.

      Шаг 1 — Создание пары ключей RSA

      Первый шаг — создание пары ключей на клиентской системе (обычно на вашем компьютере):

      По умолчанию команда ssh-keygen создает пару 2048-битных ключей RSA. Этот уровень защиты достаточен для большинства случаев (но при желании вы можете использовать флаг -b 4096, чтобы создать более надежный 4096-битный ключ).

      После ввода команды вы должны увидеть следующее:

      Output

      Generating public/private rsa key pair. Enter file in which to save the key (/your_home/.ssh/id_rsa):

      Нажмите ENTER, чтобы сохранить пару ключей в подкаталог .ssh/ домашнего каталога или укажите альтернативный путь.

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

      Output

      /home/your_home/.ssh/id_rsa already exists. Overwrite (y/n)?

      Если вы решите перезаписать ключ на диске, вы больше не сможете выполнять аутентификацию с помощью предыдущего ключа. Будьте осторожны при выборе варианта yes, потому что этот процесс уничтожает ключи, и его нельзя отменить.

      Затем вы должны увидеть следующую строку:

      Output

      Enter passphrase (empty for no passphrase):

      Здесь вы можете ввести защищенный пароль, что настоятельно рекомендуется сделать. Пароль добавляет дополнительный уровень безопасности для защиты от входа в систему несанкционированных пользователей. Дополнительную информацию о безопасности можно найти в нашем обучающем модуле Настройка аутентификации на базе ключей SSH на сервере Linux.

      Вы должны увидеть следующий результат:

      Output

      Your identification has been saved in /your_home/.ssh/id_rsa. Your public key has been saved in /your_home/.ssh/id_rsa.pub. The key fingerprint is: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host The key's randomart image is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+

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

      Шаг 2 — Копирование открытого ключа на сервер Ubuntu

      Самый быстрый способ скопировать открытый ключ на хост Ubuntu — использовать утилиту ssh-copy-id. Это самый простой способ, поэтому его рекомендуется использовать, если он доступен. Если на клиентском компьютере нет утилиты ssh-copy-id, вы можете использовать один из двух альтернативных методов, описанных в этом разделе (копирование через SSH на базе пароля или копирование ключа вручную).

      Копирование открытого ключа с помощью утилиты ssh-copy-id

      Утилита ssh-copy-id по умолчанию входит в состав многих операционных систем, поэтому она может быть доступна на вашем локальном компьютере. Чтобы этот метод сработал, вы должны уже настроить защищенный паролем доступ к серверу через SSH.

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

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

      • ssh-copy-id username@remote_host

      Вы можете увидеть следующее сообщение:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Это означает, что ваш локальный компьютер не распознает удаленный хост. Это произойдет при первом подключении к новому хосту. Введите «yes» и нажмите ENTER, чтобы продолжить.

      Затем утилита проведет сканирование локальной учетной записи для поиска ранее созданного ключа id_rsa.pub. Когда ключ будет найден, вам будет предложено ввести пароль учетной записи удаленного пользователя:

      Output

      /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys username@203.0.113.1's password:

      Введите пароль (для безопасности вводимый текст не будет отображаться) и нажмите ENTER. Утилита подключится к учетной записи на удаленном хосте, используя указанный вами пароль. Затем содержимое ключа ~/.ssh/id_rsa.pub будет скопировано в основной каталог ~/.ssh удаленной учетной записи в файл с именем authorized_keys.

      Вы должны увидеть следующий результат:

      Output

      Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@203.0.113.1'" and check to make sure that only the key(s) you wanted were added.

      Теперь ваш ключ id_rsa.pub key выгружен в удаленную учетную запись. Вы можете переходить к шагу 3.

      Копирование открытого ключа с помощью SSH

      Если у вас нет ssh-copy-id, но вы активировали защищенный паролем доступ к учетной записи на вашем сервере через SSH, вы можете выгрузить ключи с помощью стандартного метода SSH.

      Для этого нужно использовать команду cat, чтобы прочитать содержимое открытого ключа SSH на локальном компьютере и передать его через соединение SSH на удаленный сервер.

      Также мы можем убедиться, что каталог ~/.ssh и имеет правильные разрешения для используемой нами учетной записи.

      Мы можем вывести переданное содержимое в файл с именем authorized_keys в этом каталоге. Мы используем символ перенаправления >>, чтобы дополнять содержимое, а не заменять его. Это позволяет добавлять ключи без уничтожения ранее добавленных ключей.

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

      • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

      Вы можете увидеть следующее сообщение:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Это означает, что ваш локальный компьютер не распознает удаленный хост. Это произойдет при первом подключении к новому хосту. Введите «yes» и нажмите ENTER, чтобы продолжить.

      После этого вам нужно будет ввести пароль учетной записи удаленного пользователя:

      Output

      username@203.0.113.1's password:

      После ввода пароля содержимое ключа id_rsa.pub будет скопировано в конец файла authorized_keys учетной записи удаленного пользователя. Если операция выполнена успешно, переходите к шагу 3.

      Копирование открытого ключа вручную

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

      Мы вручную добавим содержимое вашего файла id_rsa.pub в файл ~/.ssh/authorized_keys на удаленном компьютере.

      Чтобы вывести содержимое ключа id_rsa.pub, введите на локальном компьютере следующую команду:

      Вы увидите содержимое ключа, которое должно выглядеть следующим образом:

      Output

      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

      Получите доступ к удаленному хосту с использованием любого доступного метода.

      После получения доступа к учетной записи на удаленном сервере убедитесь, что каталог ~/.ssh существует. При необходимости эта команда создаст каталог, а если каталог уже существует, команда ничего не сделает.

      Теперь вы можете создать или изменить файл authorized_keys в этом каталоге. Вы можете добавить содержимое файла id_rsa.pub в конец файла authorized_keys и при необходимости создать его с помощью этой команды:

      • echo public_key_string >> ~/.ssh/authorized_keys

      В вышеуказанной команде замените public_key_string результатами команды cat ~/.ssh/id_rsa.pub, выполненной на локальном компьютере. Она должна начинаться с ssh-rsa AAAA....

      Наконец, нужно убедиться, что каталог ~/.ssh и файл authorized_keys имеют соответствующий набор разрешений:

      При этом будут рекурсивно удалены все разрешения «group» и «other» для каталога ~/.ssh/.

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

      • chown -R sammy:sammy ~/.ssh

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

      Теперь мы можем попробовать настроить аутентификацию без пароля на нашем сервере Ubuntu.

      Шаг 3 — Аутентификация на сервере Ubuntu с помощью ключей SSH

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

      Базовый процесс выглядит аналогично:

      Если вы подключаетесь к этому хосту первый раз (если вы используете указанный выше последний метод), вы сможете увидеть следующее:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Это означает, что ваш локальный компьютер не распознает удаленный хост. Введите «yes» и нажмите ENTER, чтобы продолжить.

      Если вы не указывали пароль для своего закрытого ключа, вы войдете в систему немедленно. Если вы указали пароль закрытого ключа при создании ключа, вам будет предложено ввести его сейчас (для безопасности вводимые символы не будут отображаться в сеансе терминала). После аутентификации в оболочке откроется новый сеанс с настроенной учетной записью на сервере Ubuntu.

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

      Шаг 4 — Отключение аутентификации на сервере с помощью пароля

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

      Прежде чем выполнять описанные в настоящем разделе шаги, убедитесь, что вы настроили аутентификацию на базе ключей SSH для учетной записи root на этом сервере, или (предпочтительно) вы настроили аутентификацию на базе ключей SSH для учетной записи сервера без привилегий root и с привилегиями sudo. На этом шаге вход в систему по паролю будет заблокирован, поэтому очень важно сохранить возможность доступа с правами администратора.

      Подтвердив права администратора для удаленной учетной записи, выполните вход на удаленный сервер с помощью ключей SSH как пользователь с привилегиями root или как пользователь с привилегиями sudo. Затем откройте файл конфигурации демона SSH:

      • sudo nano /etc/ssh/sshd_config

      Найдите в файле директиву PasswordAuthentication. Она может быть помечена как комментарий. Удалите символ комментария в начале строки и установите значение «no». После этого вы не сможете выполнять вход в систему через SSH с использованием паролей учетной записи:

      /etc/ssh/sshd_config

      ...
      PasswordAuthentication no
      ...
      

      Сохраните и закройте файл, нажав CTRL + X, затем нажмите Y для подтверждения сохранения файла, а затем нажмите ENTER для выхода из nano. Для фактического внесения этих изменений нужно перезапустить службу sshd:

      • sudo systemctl restart ssh

      В качестве меры предосторожности откройте новое окно терминала и проверьте работу службы SSH, прежде чем закрывать этот сеанс:

      После проверки работы службы SSH вы сможете безопасно закрыть все текущие сеансы сервера.

      Теперь демон SSH на вашем сервере Ubuntu будет реагировать только на ключи SSH. Аутентификация на базе паролей успешно отключена.

      Заключение

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

      Если вы хотите узнать больше о работе с SSH, посмотрите наше Руководство по основам SSH.



      Source link

      Como configurar as chaves SSH no CentOS


      Introdução

      O SSH, ou shell seguro, é um protocolo criptografado usado para administrar e se comunicar com servidores. Ao trabalhar com um servidor CentOS, existem boas chances de você gastar a maior parte do seu tempo em uma sessão de terminal conectada ao seu servidor através do SSH.

      Neste guia, vamos focar na configuração de chaves SSH para uma instalação básica do CentOS 7. As chaves SSH fornecem uma maneira simples e segura de fazer o login no seu servidor e são recomendadas para todos os usuários.

      Passo 1 — Criar um par de chaves RSA

      O primeiro passo é criar uma par de chaves na máquina do cliente (geralmente seu computador):

      Por padrão, o ssh-keygen criará um par de chaves RSA de 2048-bit, que é seguro o suficiente para a maioria dos casos (você pode opcionalmente adicionar a flag -b 4096 para criar uma chave maior de 4096-bit).

      Após digitar o comando, você deve ver o seguinte prompt:

      Output

      Generating public/private rsa key pair. Enter file in which to save the key (/your_home/.ssh/id_rsa):

      Pressione ENTER para salvar o par de chaves no sub-diretório .ssh/ no seu diretório home, ou especifique um caminho alternativo.

      Se você tivesse gerado anteriormente um par de chaves SSH, pode ser que veja o seguinte prompt:

      Output

      /home/your_home/.ssh/id_rsa already exists. Overwrite (y/n)?

      Se escolher substituir a chave no disco, você não poderá autenticar-se usando a chave anterior. Seja cuidadoso ao selecionar o sim, uma vez que este é um processo destrutivo que não pode ser revertido.

      Então, você deve ver o seguinte prompt:

      Output

      Enter passphrase (empty for no passphrase):

      Aqui você pode digitar uma frase secreta de forma opcional, o que é altamente recomendado. Uma frase secreta adiciona uma camada adicional de segurança para evitar que os usuários não autorizados façam login. Para aprender mais sobre segurança, consulte nosso tutorial sobre Como configurar a autenticação baseada em chaves SSH em um servidor Linux.

      Você deve ver o seguinte resultado:

      Output

      Your identification has been saved in /your_home/.ssh/id_rsa. Your public key has been saved in /your_home/.ssh/id_rsa.pub. The key fingerprint is: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host The key's randomart image is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+

      Agora, você tem uma chave pública e privada que pode usar para se autenticar. O próximo passo é colocar a chave pública no seu servidor para que você possa usar a autenticação baseada em chaves SSH para fazer login.

      Passo 2 — Copiar a chave pública do servidor CentOS

      A maneira mais rápida de copiar sua chave pública para o host do CentOS é usar um utilitário chamado ssh-copy-id. Devido a sua simplicidade, este método é altamente recomendado se estiver disponível. Se não tiver o ssh-copy-id disponível na sua máquina do cliente, você pode usar um dos dois métodos alternativos fornecidos nesta seção (copiar através do SSH baseado em senha, ou copiar manualmente a chave).

      Copiando sua chave pública usando o ssh-copy-id

      A ferramenta ssh-copy-id é incluída por padrão em muitos sistemas operacionais, então você pode tê-la disponível no seu sistema local. Para que este método funcione, você já deve ter acesso via SSH baseado em senha ao seu servidor.

      Para usar o utilitário, você precisa especificar apenas o host remoto ao qual gostaria de se conectar e a conta do usuário que tem acesso SSH via senha. Esta é a conta na qual sua chave SSH pública será copiada.

      A sintaxe é:

      • ssh-copy-id username@remote_host

      Pode ser que você veja a seguinte mensagem:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Isso significa que seu computador local não reconhece o host remoto. Isso acontecerá na primeira vez que você se conectar a um novo host. Digite “yes” e pressione ENTER para continuar.

      Em seguida, o utilitário irá analisar sua conta local em busca da chave id_rsa.pub que criamos mais cedo. Quando ele encontrar a chave, irá solicitar a senha da conta do usuário remoto:

      Output

      /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys username@203.0.113.1's password:

      Digite a senha (sua digitação não será exibida para fins de segurança) e pressione ENTER. O utilitário se conectará à conta no host remoto usando a senha que você forneceu. Então, ele copiará o conteúdo da sua chave ~/.ssh/id_rsa.pub em um arquivo no diretório da conta remota home ~/.ssh chamado authorized_keys.

      Você deve ver o seguinte resultado:

      Output

      Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@203.0.113.1'" and check to make sure that only the key(s) you wanted were added.

      Neste ponto, sua chave id_rsa.pub foi enviada para a conta remota. Você pode continuar para o Passo 3.

      Copiando a chave pública usando o SSH

      Se não tiver o ssh-copy-id disponível, mas tiver acesso SSH baseado em senha a uma conta do seu servidor, você pode fazer o upload das suas chaves usando um método SSH convencional.

      Podemos fazer isso usando o comando cat para ler o conteúdo da chave SSH pública no nosso computador local e passando isso através de uma conexão SSH ao servidor remoto.

      Do outro lado, podemos garantir que o diretório ~/.ssh exista e que tenha as permissões corretas na conta que estamos usando.

      Então, podemos entregar o conteúdo que foi passado em um arquivo chamado authorized_keys dentro deste diretório. Vamos usar o símbolo de redirecionamento >> para adicionar o conteúdo ao invés de substituí-lo. Isso permitirá que adicionemos chaves sem destruir chaves previamente adicionadas.

      O comando completo se parece com este:

      • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

      Pode ser que você veja a seguinte mensagem:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Isso significa que seu computador local não reconhece o host remoto. Isso acontecerá na primeira vez que você se conectar a um novo host. Digite “yes” e pressione ENTER para continuar.

      Depois disso, você deve ser solicitado a digitar a senha da conta de usuário remoto:

      Output

      username@203.0.113.1's password:

      Após digitar sua senha, o conteúdo da sua chave id_rsa.pub será copiado para o final do arquivo authorized_keys da conta do usuário remoto. Continue para o Passo 3 se isso foi bem-sucedido.

      Copiando a chave pública manualmente

      Se não tiver acesso SSH baseado em senha ao seu servidor disponível, você terá que completar o processo acima manualmente.

      Vamos adicionar manualmente o conteúdo do seu arquivo id_rsa.pub ao arquivo ~/.ssh/authorized_keys na sua máquina remota.

      Para exibir o conteúdo da sua chave id_rsa.pub, digite isso no seu computador local:

      Você verá o conteúdo da chave, que deve ser parecido com este:

      Output

      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

      Acesse seu host remoto usando algum método que você tenha disponível.

      Assim que tiver acesso à sua conta no servidor remoto, você deve garantir que o diretório ~/.ssh exista. Este comando criará o diretório se necessário, ou não fará nada se ele já existir:

      Agora, você pode criar ou modificar o arquivo authorized_keys dentro deste diretório. Você pode adicionar o conteúdo do seu arquivo id_rsa.pub ao final do arquivo authorized_keys, criando-o se for necessário, usando este comando:

      • echo public_key_string >> ~/.ssh/authorized_keys

      No comando acima, substitua o public_key_string pelo resultado do comando cat ~/.ssh/id_rsa.pub que você executou no seu sistema local. Ela deve começar com ssh-rsa AAAA....

      Por fim, vamos garantir que o diretório ~/.ssh e o arquivo authorized_keys tenha as permissões apropriadas configuradas:

      Isso remove recursivamente todas as permissões “group” e “other” para o diretório ~/.ssh/.

      Se você estiver usando a conta root para configurar chaves para uma conta de usuário, também é importante que o diretório ~/.ssh pertença ao usuário e não ao root:

      • chown -R sammy:sammy ~/.ssh

      Neste tutorial, nosso usuário chama-se sammy, mas você deve substituí-lo pelo nome de usuário apropriado no comando acima.

      Agora, podemos tentar uma autenticação sem senha com nosso servidor Ubuntu.

      Passo 3 — Autenticar para seu servidor CentOS usando chaves SSH

      Se tiver completado um dos procedimentos acima, você deve conseguir fazer login no host remoto* sem* a senha da conta remota.

      O processo básico é o mesmo:

      Se essa é a primeira vez que você se conecta a este host (caso tenha usado o último método acima), pode ser que veja algo como isso:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Isso significa que seu computador local não reconhece o host remoto. Digite “yes” e então pressione ENTER para continuar.

      Se não forneceu uma frase secreta para sua chave privada, você será logado imediatamente. Se forneceu uma frase secreta para a chave privada quando a criou, você será solicitado a digitar a frase secreta agora. Após a autenticação, uma nova sessão de shell deve abrir para você com a conta configurada no servidor CentOS.

      Se a autenticação baseada em chaves foi bem-sucedida, continue para aprender a proteger ainda mais o seu sistema, desativando a autenticação por senha.

      Passo 4 — Desativar a autenticação por senha no seu servidor

      Se conseguiu logar na sua conta usando o SSH sem uma senha, você configurou com sucesso a autenticação baseada em chaves SSH na sua conta. Entretanto, seu mecanismo de autenticação baseado em senha ainda está ativo, o que significa que seu servidor ainda está exposto a ataques por força bruta.

      Antes de completar os passos nesta seção, certifique-se de que você tenha uma autenticação baseada em chaves SSH configurada para a conta raiz neste servidor, ou, de preferência, que tenha uma autenticação baseada em senhas SSH configurada para uma conta não raiz neste servidor com privilégios sudo. Este passo irá bloquear os logins baseados em senha, então garantir que você ainda consiga obter acesso administrativo é crucial.

      Assim que você tiver confirmado que sua conta remota tem privilégios administrativos, logue no seu servidor remoto com chaves SSH, como raiz ou com uma conta com privilégios sudo. Então, abra o arquivo de configuração do daemon SSH:

      • sudo vi /etc/ssh/sshd_config

      Dentro do arquivo, procure por uma diretriz chamada PasswordAuthentication. Isso pode ser retirado. Pressione i para inserir texto, e então descomente a linha e configure o valor para “no”. Isso irá desativar a sua capacidade de fazer login através do SSH usando senhas de conta:

      /etc/ssh/sshd_config

      ...
      PasswordAuthentication no
      ...
      

      Quando você terminar de fazer as alterações, pressione ESC e então :wq para escrever as alterações no arquivo e saia. Para realmente implementar essas alterações, precisamos reiniciar o serviço sshd:

      • sudo systemctl restart sshd.service

      Como uma precaução, abra uma nova janela de terminal e teste se o serviço SSH está funcionando corretamente antes de fechar esta sessão:

      Assim que você tiver verificado seu serviço SSH, você pode fechar todas as sessões atuais do servidor com segurança.

      O daemon SSH no seu servidor CentOS agora responde apenas às chaves SSH. A autenticação baseada em senha foi desativada com sucesso.

      Conclusão

      Agora, você deve ter uma autenticação baseada em chaves SSH configurada no seu servidor, permitindo que você faça login sem fornecer uma senha da conta.

      Se você quiser aprender mais sobre como trabalhar com o SSH, veja nosso Guia dos fundamentos SSH.



      Source link