- Как перенести мои ключи SSH на другую машину?
- Используйте два закрытых ключа
- Детали
- Простое копирование ssh ключей между серверами c использованием утилиты ssh-copy-id
- Скопировать секретные ключи ssh на другой компьютер
- 3 ответа
- Самый простой способ скопировать ключи SSH на другую машину?
- Графический метод
- Как создать ключ для авторизации по SSH и добавить его на сервер?
- Создание SSH-ключей в Linux на примере CentOS
- Создание SSH-ключей на Windows с PuTTYgen
- Отключение аутентификации по паролю
Как перенести мои ключи SSH на другую машину?
У меня есть аккаунты на двух машинах: H1 и H2. Я создал ключи ssh на H1 и установил его на S1. Теперь я могу SSH к S1 от H1. Я хочу сделать то же самое с H2. Как мне установить ключи ssh, сгенерированные на H1 на H2?
Отредактировано: если у вас есть обе машины, вы можете поделиться своим закрытым ключом. Но это решение небезопасно для случая кражи ноутбука или для машин, которыми вы не владеете.
Вы можете скопировать свои личные ключи с H1 на H2, если вы хотите использовать тот же закрытый ключ, чтобы иметь возможность войти с H2 на S1. Когда вы в H1 делаете команды:
Предупреждение! Это удалит и заменит любой закрытый ключ, который у вас был на H2.
Лучше всего сгенерировать новые закрытые ключи в H2 ( ssh-keygen ) и установить их открытую часть на S1 с помощью ssh-copy-id util. В этом более безопасном случае у вас будет два набора ключей; один для входа в систему H1-S1, а второй для входа в систему H2-S1. На S1 будет разрешено два открытых ключа. И вы сможете отозвать любой из них или оба (например, когда у вас украли ноутбук или владелец машины решит отключить вашу учетную запись и повторно использовать все ваши файлы).
ssh-copy-id [-i [индивидуальный_файл]] [пользователь @] машина
ssh-copy-id — это сценарий, который использует ssh для входа на удаленный компьютер и добавления указанного идентификационного файла в файл
/ .ssh / authorized_keys этого компьютера.
Используйте два закрытых ключа
Настройте H2, используя тот же процесс (но не тот же закрытый ключ), который вы использовали при настройке H1:
- Никогда не существует веских причин для копирования закрытого ключа с другого компьютера. Если вы еще не сгенерировали новый закрытый ключ на H2, сделайте это сейчас. Также сгенерируйте соответствующий открытый ключ. В терминале на H2,
тип: ssh-keygen -t rsa
- Скопируйте открытый ключ вашей H2 на сервер. В терминале на H2,
тип: ssh-copy-id username@S1.net
(но используйте свое действительное имя пользователя на S1 и имя хоста S1, а затем введите свой пароль на S1, когда он запросит его).
Это установит открытый ключ вашей рабочей станции в
/.ssh/authorized_keys файл для этого пользователя на сервере.
- Нет шага 3. С этого момента вы можете войти в S1 со своего H2, а также войти в S1 со своего H1.
Детали
Я предполагаю, что вы действительно спрашиваете
- У меня есть сервер («S1»)
- Я вхожу в свой сервер с моего личного ноутбука («H1»)
- Я также хочу войти в свой сервер с моей рабочей станции («H2»).
Как правильно это сделать?
- Я полагаю, что я мог бы просто войти с тем же паролем из обоих мест. Это не может быть правильным способом, потому что все говорят, что аутентификация с открытым ключом намного лучше, чем пароли. (а)
- Я полагаю, я мог бы просто скопировать закрытый ключ со своего ноутбука на мою рабочую станцию. Это не может быть правильным способом, потому что все говорят, что закрытый ключ никогда не должен покидать клиентский компьютер.
Людям вбивают в голову, что одна учетная запись на сервере имеет одно имя пользователя и, конечно, один авторизованный пароль.
Системы с открытым ключом, такие как 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 на другой компьютер
Мне нужно использовать другой компьютер для доступа к моему ssh-серверу. Это связано с тем, что недавно реализованный vpn в моем университете не работает на моем текущем компьютере, и я потерял доступ к серверу.
I ssh через зашифрованные ключи ssh. Могу ли я скопировать эти ключи на новый компьютер (на котором работает vpn). Я попытался скопировать файлы id_rsa и id_rsa.pub в папку
/.ssh , но он не распознает ключи, и нет приглашения ввести пароль для дешифрования ключей.
EDIT: я не могу получить доступ к серверу, чтобы создать новую пару ключей для нового компьютера и выйти за пределы страны, чтобы физически не получить доступ к ней.
3 ответа
Проверьте разрешения и права собственности на ваш файл закрытого ключа. Из руководства
Эти файлы содержат конфиденциальные данные и должны быть прочитаны пользователем, но недоступны другим (чтение / запись / выполнение). ssh просто игнорирует файл закрытого ключа, если он доступен другим.
Обычно файлы ключей должны выглядеть так:
, которые вы можете выполнить с помощью:
Попробуйте запустить ssh-add перед SSH на сервере — после этого вам будет предложено ввести пароль, а затем последующие подключения ssh могут использовать ваш закрытый ключ.
Команда ssh-add добавляет ключи к ключевому агенту.
Зашифрованные закрытые ключи сохраняют свой открытый ключ незашифрованным. Таким образом, клиент SSH может подключаться к удаленному серверу без запроса пароля (он только предлагает публичную часть в этом пункте). Всякий раз, когда сервер принимает открытый ключ, клиент на вашем ПК хочет дешифровать закрытый ключ и будет запрашивать парольную фразу.
Теперь, когда сервер принимает соединение только с определенного IP-адреса, это уже отклонено на первом шаге и объясняет сообщение, полученное с сервера «Роуминг, не разрешенный сервером».
Итак, я думаю, что ваш сервер каким-то образом ограничен, чтобы разрешать только определенные IP-адреса для этого ключа. Вы можете сделать это несколькими способами, но это является общим в
Чтобы доказать, что вы можете прочитать открытый ключ из зашифрованного закрытого ключа без пароля, запустите: [ ! d4]
Самый простой способ скопировать ключи 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 просто выберет его автоматически.
Если у вас нет идентификатора, вы можете создать его с помощью инструмента ssh-keygen .
Кроме того, если сервер использует порт, отличный от порта по умолчанию ( 22 ), вы должны использовать кавычки следующим образом ( источник ):
Мне нравится ответ от Марселя. Я не знал эту команду. Я всегда использовал то, что нашел на веб-сайте Oracle :
Я подумал опубликовать это здесь еще, потому что это хорошая иллюстрация того, чего можно достичь в шелл-коде с помощью силы ssh . Но использование ssh-copy-id определенно более безопасного способа сделать это правильно!
Обратите внимание, что если папка .ssh еще не существует, приведенная выше команда не будет выполнена. Кроме того, может быть лучше при создании файла установить минимально возможное разрешение (в основном чтение-запись только для владельца). Вот более продвинутая команда:
Графический метод
- Откройте Приложения ▸ Пароли и ключи ▸ Мои личные ключи .
- Выберите ключ и нажмите « Удаленный» ▸ « Настроить ключ для Secure Shell» .
В Ubuntu вы можете получить ключи с Launchpad:
Детали :
- Вам нужна учетная запись Launchpad, поэтому войдите или создайте учетную запись
- После входа нажмите кнопку рядом с ключами SSH:
Вставьте содержимое файла с открытым ключом в это поле (включая комментарий). Такой ключ выглядит так:
Здесь ssh-rsa указывает, что ключ является ключом RSA, AAAAB3Nza . UyDOFDqJp является фактическим ключом и lekensteyn является комментарием.
Пакет ssh-import-id должен быть установлен на машине, к которой необходимо получить доступ удаленно. Этот пакет устанавливается вместе с openssh-server пакетом, поскольку это рекомендуемый пакет для openssh-server . Убедившись, что ssh-import-id оно установлено на клиентском компьютере, запустите:
Это загрузит открытый ключ с серверов Launchpad по протоколу HTTPS, который защитит вас от MITM-атак.
В Ubuntu Lucid и ранее вы можете сделать то же самое с:
Команда echo нужна для получения дополнительной новой строки после строки с ключом SSH.
Как создать ключ для авторизации по SSH и добавить его на сервер?
SSH-ключи используются для идентификации клиента при подключении к серверу по SSH-протоколу . Используйте этот способ вместо аутентификации по паролю.
SSH-ключи представляют собой пару — закрытый и открытый ключ. Закрытый должен храниться в закрытом доступе у клиента, открытый отправляется на сервер и размещается в файле authorized_keys.
Создание SSH-ключей в Linux на примере CentOS
На клиентской стороне должен быть установлен пакет ssh (openssh). На серверах FirstVDS с шаблонами по умолчанию необходимое ПО уже установлено.
На клиентском компьютере в командной строке выполните команду генерации ключей:
Введите путь файла, в который будут помещены ключи. Каталог по умолчанию указан в скобках, в примере /домашний_каталог/.ssh/id_rsa . Если хотите оставить расположение по умолчанию, нажмите Enter .
Пароль (passphrase) используется для ограничения доступа к закрытому ключу. Пароль усложнит использование ключа третьими лицами в случае утраты. Если не хотите использовать секретную фразу, нажмите Enter без заполнения строки.
Успешно сгенерировав пару ключей, вы увидите уведомление:
Открытый ключ хранится в файле /домашний_каталог/.ssh/id_rsa.pub , закрытый — /домашний_каталог/.ssh/id_rsa .
Скопируйте открытый ключ на сервер в файл /домашний_каталог/.ssh/authorized_keys . Одной строкой:
Или откройте этот файл на сервере редактором vi и вставьте строку с открытым ключом после ssh-rsa .
Ещё один способ скопировать ключ в authorized_keys — команда echo , которая помещает строку в конец файла.
Теперь можно отключить на сервере аутентификацию по паролю и использовать только SSH-ключи.
Создание SSH-ключей на Windows с PuTTYgen
Если вы используете ОС Windows, то подключиться по SSH к вашему (Linux) серверу можно через PuTTY или OpenSSH . Генерация ключей в этом случае выполняется также при помощи этих программ. В примере мы используем клиент PuTTY.
Запустите приложение PuTTYgen , которое устанавливается вместе с PuTTY.
Выберите тип ключа SSH2-RSA и нажмите Generate .
В процессе генерации ключей несколько раз произвольно проведите мышкой по экрану приложения для создания случайных величин, используемых для ключей.
После завершения создания ключей открытый ключ выводится на экран, закрытый хранится в памяти приложения. Чтобы сохранить эти ключи нажмите Save public key и Save private key . Укажите расположение файлов с ключами.
При сохранении закрытого ключа, если не заполнено поле Key passphrase , появится запрос «Хотите ли вы сохранить ключ без секретной фразы?»
Теперь открытый ключ необходимо скопировать на сервер в файл authorized_keys . Используйте WinSCP или другой клиент для работы с файлами на удалённом Linux-сервере. Вы можете скопировать файл с открытым ключом целиком на сервер, чтоб его копия хранилась в папке .ssh
Откройте файл authorized_keys через WinSCP и файл, в который вы сохранили открытый ключ (public), на локальном компьютере текстовым редактором. Скопируйте значение ключа, сохраните и закройте файл в WinSCP.
При запуске PuTTY укажите путь к закрытому ключу на локальном компьютере. Для этого во вкладке Connections → Auth выберите необходимый путь.
Теперь можно отключить на сервере аутентификацию по паролю и использовать только SSH-ключи.
Отключение аутентификации по паролю
Подключитесь к серверу по SSH, используя пароль, и откройте файл sshd_config для редактирования.
Убедитесь, что указан правильный путь к открытым ключам SSH, поставьте значение параметра PasswordAuthentication no .
Перезапустите службу sshd.
Подключитесь к серверу по SSH без использования пароля. Например, запустите PuTTY, проверьте, что во вкладке Connections -> Auth содержится путь к закрытому ключу и откройте подключение.
В случае успешной аутентификации по SSH-ключу вы получите доступ к командной строке сервера и сообщение вида Authenticating with public key «rsa-key-20170510» , где rsa-key-20170510 — имя применённого закрытого ключа, указанное вами в файле authorized_keys .