Как скопировать ssh key linux

Авторизация по SSH-ключу

Использование SSH-ключа для подключения к серверу позволяет сделать работу более безопасной (снизится вероятность взлома учетной записи) и более удобной (не будет необходимости при каждом соединении вводить пароль).

Настройка авторизации по ключу состоит из создания ключа на локальном компьютере и копирования его на сервер.

Скопировать ключ на сервер также можно с помощью панели управления — при создании нового VDS или переустановке системы. Кроме того, вы можете хранить ключи в панели управления, чтобы использовать их при создании серверов.

Linux, MacOS, Windows 10

Создание SSH-ключей

Эта инструкция подойдет для ОС Linux, MacOS, а также для версий Windows 10 начиная с 1809 — в них доступен встроенный SSH-клиент. Если у вас более ранняя версия Windows, воспользуйтесь инструкцией из пункта Старые версии Windows (без OpenSSH).

Запустите терминал или Windows PowerShell на вашем компьютере и выполните команду:

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

Нажмите Enter — ключ будет сохранен в указанную директорию по умолчанию.

Далее вам будет предложено задать пароль (кодовую фразу) для ключа. Вы можете задать ее или оставить пустой, просто нажав Enter. Обратите внимание, что если вы зададите кодовую фразу, ее потребуется вводить при каждой авторизации по ключу.

Процедура создания ключей завершена, ключи сохранены в директории

/.ssh/ в файлах id_rsa и id_rsa.pub. Теперь их необходимо скопировать на сервер.

Копирование ключей на сервер

Выполните в терминале следующую команду, указав вместо user имя пользователя, созданного на сервере, а вместо server — IP-адрес вашего сервера:

В результате содержимое файла с публичным ключом id_rsa.pub будет скопировано в файл

/.ssh/authorized_keys на сервере, и в дальнейшем вы сможете устанавливать соединение с сервером, используя команду:

Старые версии Windows (без OpenSSH)

Если вы используете версию Windows без OpenSSH, вам потребуется специальная программа — PuTTYgen. Вы можете скачать дистрибутив puttygen.exe с официального сайта PuTTY.

Создание SSH-ключей

  1. Запустите программу, в открывшемся окне выберите «Type of key — SSH-2 RSA и нажмите «Generate».
  2. Пока создается ключ, водите мышью в хаотичном порядке в пространстве под строкой загрузки для генерации случайных значений.
  3. После того, как ключ будет создан, в окне программы вы сможете задать «Key passphrase» (кодовую фразу) для ключа. Это необязательно, вы можете оставить строку пустой. Если вы решите задать кодовую фразу, обратите внимание, что ее потребуется вводить при каждой авторизации по ключу.
  4. Далее сохраните созданные ключи, нажав на кнопки «Save public key» и «Save private key«, например, под именами id_rsa.pub и mykey.ppk. Также скопируйте и сохраните в любом текстовом файле содержимое окна «Public key for pasting…» — оно потребуется при копировании созданного ключа на сервер.

На этом процедура создания ключей завершена.

Копирование ключей на сервер

В процессе копирования ключей вам потребуется утилита pageant. Вы можете скачать дистрибутив pageant.exe с официального сайта PuTTY.

Подключитесь к серверу по SSH и выполните команду для создания на сервере директории и файла для хранения ключей:

Откройте созданный файл с помощью текстового редактора:

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

Читайте также:  Manjaro linux не загружается с флешки

Отключение доступа по паролю

Для того, чтобы доступ к серверу мог осуществляться только по ключу, необходимо запретить авторизацию по паролю. Для этого требуется внести правки в файл /etc/ssh/sshd_config.

Откройте файл командой:

Сохраните изменения, после чего перезапустите службу SSH:

Источник

Простое копирование ssh ключей между серверами c использованием утилиты ssh-copy-id

Традиционно администраторы решают задачу копирования ssh ключей между серверами путем копирования содержимого файла /root/.ssh/id_rsa.pub с сервера server1 на server2 в файл /root/.ssh/authorized_keys. Копируют обычно из одного терминала в другой, но есть более изящное решение — это использование утилиты ssh-copy-id, которая позволяет скопировать содержимое id_rsa.pub сервера источник (в нашем случае server1) на сервер приемник (server2) в нужный нам authorized_keys не открывая консоль сервера приемника (server2).

Исходные данные: 2 сервера с Debian 8 (server1 и server2).
Задача: Организовать вход по ssh ключу с сервера server1 на server2 с правами root.

Итак сделаем все по порядку:

1. Генерируем публичный открытый и закрытый ключи, под пользователем root на server1:

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

Мы создаем ключи впервые, поэтому предупреждения не будет, будет выведена примерно такая информация:

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

Ключи сгенерированы, мы можем проверить под пользователем root выполнив команду

В ответ увидим примерно:

Теперь нужно передать публичный ключ id_rsa.pub пользователя root на server2, для этого на server1 выполняем:

Вводим пароль root от сервера server2 и ключ будет передан и записан в нужный файл authorized_keys

Важное уточнение: Чтобы передать публичный ключ на server2 под root нужно чтобы пользователю root было разрешен вход по ssh на server2, обычно при базовой установке Debian/Ubuntu вход под root по ssh разрешен, это настраивается директивой PermitRootLogin в файле /etc/ssh/sshd_config

PermitRootLogin yes — Вход под root по ssh разрешен.

PermitRootLogin no — Вход под root по ssh запрещен.

PermitRootLogin without-password — Вход под root по ssh разрешен только по ssh ключам.

PermitRootLogin forced-commands-only — Вход под root по ssh разрешен только по ssh ключам и только для выполнения заранее определенной команды, сама команда прописывается в /root/.ssh/authorized_keys в формате:

После изменения PermitRootLogin не забудьте перезапустить службу sshd командой:

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

Источник

Самый простой способ скопировать ключи SSH на другую машину?

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

Я ищу самый простой и рекомендуемый способ копирования ключа, надеюсь, есть где-нибудь в пакете Ubuntu ssh вспомогательная оболочка?

Команда ssh-copy-id (в пакете openssh-client и установлена ​​по умолчанию) делает именно это:

копирует открытый ключ вашей идентификационной информации по умолчанию (используется -i identity_file для других идентификационных данных) на удаленный хост.

Идентификацией по умолчанию является ваш «стандартный» ключ ssh. Она состоит из двух файлов (открытые и закрытые ключи) в вашем

/.ssh каталоге, как правило , с именем identity , id_rsa , id_dsa , id_ecdsa или id_ed25519 (и то же самое с .pub ), в зависимости от типа ключа. Если вы не создали более одного ключа ssh, вам не нужно беспокоиться об указании идентификатора, ssh-copy-id просто выберет его автоматически.

Читайте также:  Tiny core linux virtualbox image

Если у вас нет идентификатора, вы можете создать его с помощью инструмента ssh-keygen .

Кроме того, если сервер использует порт, отличный от порта по умолчанию ( 22 ), вы должны использовать кавычки следующим образом ( источник ):

Мне нравится ответ от Марселя. Я не знал эту команду. Я всегда использовал то, что нашел на веб-сайте Oracle :

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

Обратите внимание, что если папка .ssh еще не существует, приведенная выше команда не будет выполнена. Кроме того, может быть лучше при создании файла установить минимально возможное разрешение (в основном чтение-запись только для владельца). Вот более продвинутая команда:

Графический метод

  1. Откройте ПриложенияПароли и ключиМои личные ключи .
  2. Выберите ключ и нажмите « Удаленный» ▸ « Настроить ключ для Secure Shell» .

В Ubuntu вы можете получить ключи с Launchpad:

Детали :

  1. Вам нужна учетная запись Launchpad, поэтому войдите или создайте учетную запись
  2. После входа нажмите кнопку рядом с ключами SSH:

Вставьте содержимое файла с открытым ключом в это поле (включая комментарий). Такой ключ выглядит так:

Здесь ssh-rsa указывает, что ключ является ключом RSA, AAAAB3Nza . UyDOFDqJp является фактическим ключом и lekensteyn является комментарием.

  • Сохраните ключ, нажав Импортировать открытый ключ
  • Если все прошло хорошо, теперь ваш ключ должен быть указан в разделе SSH-ключей:
  • Пакет ssh-import-id должен быть установлен на машине, к которой необходимо получить доступ удаленно. Этот пакет устанавливается вместе с openssh-server пакетом, поскольку это рекомендуемый пакет для openssh-server . Убедившись, что ssh-import-id оно установлено на клиентском компьютере, запустите:

    Это загрузит открытый ключ с серверов Launchpad по протоколу HTTPS, который защитит вас от MITM-атак.

    В Ubuntu Lucid и ранее вы можете сделать то же самое с:

    Команда echo нужна для получения дополнительной новой строки после строки с ключом SSH.

    Источник

    Настройка пары ключей ssh на linux сервере

    1948 просмотров 1 2020-12-14

    Для повышения безопасности ssh-соединения рекомендуется отказаться от логина по паролю, и подключаться к удалённому серверу с помощью ключей. Это действие аналогично отпиранию замка с помощью ключа. Логин по паролю в конце-концов может быть взломан методом перебора, либо утечкой пароля. Тогда как логин по ключам достаточно стоек к взлому.

    Здесь будет рассказано, как создать пару ключей на клиентской машине, работающей под ОС Ubuntu 18.04. Однако, данное руководство будет актуально и на других версиях linux, с некоторыми оговорками.

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

    Для того, чтобы заходить на сервер по ключу, необходимо сгенерировать пару ключей: открытую и закрытую. Открытый (или публичный) ключ мы помещаем на сервер, а закрытый хранится у нас. По этой паре мы можем осуществлять логин на сервер. На данный сервер сможет заходить тот, у кого есть вторая часть ключа.

    Сгенерируем пару ключей.

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

    После выполнения этой команды, вы получите следующий вывод:

    После чего можно нажать клавишу “Enter”, чтобы сохранить эту пару ключей в директорию .ssh/ внутри домашней директории, либо вы можете задать другую директорию.

    Если ранее вы генерировали пару ssh-ключей, то вероятнее всего вы получите следующий вывод:

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

    Читайте также:  Windows android emulator bluestack

    После успешной операции, вы увидите следующий вывод:

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

    После этого, вы увидите следующий вывод:

    Это говорит о том, что у вас появилась пара из открытого и закрытого ключа, которые могут быть использованы для логина на удалённый сервер. Далее необходимо скопировать открытый ключ на удалённый сервер.

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

    Программа ssh-copy-id присутствует во многих дистрибутивах linux, поэтому наиболее вероятно что этот вариант вам подойдёт по умолчанию.

    Для копирования открытой части ключа, достаточно произвести копирования ключа следующей командой:

    Если вы ни разу не заходили на сервер, то вероятнее всего вы получите следующее предупреждение:

    Это означает, что ваша локальная машина не знает данный хост. Достаточно ввести “yes” и нажать “Enter”.

    После чего программа будет искать в директории локального пользователя ключ id_rsa.pub (открытый), который мы создали ранее. Если утилита найдёт этот файл, то программа копирования запросит пароль для входа на удалённый хост.

    Введите пароль, обратите внимание, что ввод пароля не отображается по соображениям безопасности. И нажимте ввод. После этого программа скопирует содержимое ключа из

    /.ssh/id_rsa.pub в файл authorized_keys в поддиректории

    /.ssh домашней директории вашего пользователя на удалённом хосте. В результате вы увидите следующее сообщение:

    Таким образом ключ загружен на удалённый сервер.

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

    Иногда бывают случаи. когда отсутствует утилита ssh-copy-id (особенно на старых операционных системах). Поэтому можно скопировать ключ вручную. Один из вариантов – это передать ключ по ssh. Для этого мы будем считывать ключ, с помощью команды cat, затем передавать его через pipe команде ssh, которая создаст ключ и разместит его в файле.

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

    Аналогично, можно все эти действия проделать вручную. Например, если вы не имеете доступ по ssh к удалённой машине. Для начала надо вывести содержимое открытого ключа на вашей локальной машине.

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

    После чего на удалённой машине необходимо создать папку

    /.ssh. Команда ниже создаст директорию, если её не существовало.

    Теперь можем дописать публичный ключ нашей локальной машины на удалённую в конец файла authorized_keys :

    Обратите внимание, что надо заменить “строка_публичного_ключа” на вывод команды cat

    После чего, необходимо убедиться, что директория

    /.ssh и файл authorized_keys имеют соответствующие права доступа:

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

    Где, user следует заменить на имя вашего пользователя.

    Подключение к удалённому серверу и отключение логина по паролю

    После всех процедур вы можете попробовать подключиться к удалённому серверу.

    Если при создании пары ключей вы не задали ключевую фразу (passphrase), вы будете залогинены автоматически. Если вы задали ключевую фразу, вам будет предложено её ввести. Это означает, что вы всё сделали верно. Теперь можно отключить логин по паролю. Для этого отредактируем файл sshd_config:

    Вам нужно найти поле: PasswordAuthentication . Она может быть даже закомментирована. Её необходимо раскоментировать и поставить значение no.

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

    Всё, теперь можете открыть новое окно терминала, и проверить соединение по ssh по вашему логину. Всё должно работать без пароля.

    Источник

    Оцените статью