Ключ ssh должен быть назван id_rsa?

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

Мне было интересно, если кто-то еще испытал это. У меня есть пара ключей для моего текущего пользователя, которые могут подключаться к разным машинам. Пусть скажут машина1 и машина2. Я вставил свой открытый ключ в соответствующий им файл author_keys. Первый из них я назвал первым ключом id_rsa и вторым ключом Бендера.

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

debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/bozo/.ssh/.ssh/identity
debug1: Trying private key: /home/bozo/.ssh/.ssh/id_rsa
debug1: Trying private key: /home/bozo/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

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

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

Пожалуйста и спасибо.

130
задан 17 March 2011 в 18:37

3 ответа

Мой любимый метод позволяет автоматически выбирать закрытый ключ

IdentityFile ~/.ssh/%l_%r@%h_id_rsa

SSH заменит% l именем локального компьютера,% r удаленным именем пользователя и% h удаленным хостом, таким образом если бы я хотел подключиться со своего компьютера с именем foo к bar как пользователь, я бы запустил:

ssh bar

И ssh автоматически использовал бы:

~/.ssh/foo_user@bar_id_rsa

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

0
ответ дан 17 March 2011 в 18:37

Принимая во внимание комментарий Стивена Руза о том, что для определения множества клавиш требуется больше времени, и мне довелось поиграть с множеством клавиш, я хотел бы предложить свое личное решение.

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

Здесь я привел ссылки на мои ключи для машин, работающих под виртуальной коробкой:

$ cd .ssh/
$ ln -s adam_vbox-id_rsa.pub id_rsa.pub
$ ln -s adam_vbox-id_rsa id_rsa

$ ls -l
total 12
-rw------- 1 adam adam 1675 2013-10-04 02:04 adam_vbox-id_rsa
-rw-r--r-- 1 adam adam  396 2013-10-04 02:04 adam_vbox-id_rsa.pub
lrwxrwxrwx 1 adam adam   16 2013-10-04 02:17 id_rsa -> adam_vbox-id_rsa
lrwxrwxrwx 1 adam adam   20 2013-10-04 02:17 id_rsa.pub -> adam_vbox-id_rsa.pub
-rw-r--r-- 1 adam adam 3094 2013-10-04 02:09 known_hosts

Можно также добавить действительно быстрый скрипт для переключения на другой набор без необходимости вручную вводить ln [ 116] команда снова.

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

0
ответ дан 17 March 2011 в 18:37

По умолчанию ssh ищет файлы id_dsa и id_rsa. Ключи не обязательно должны быть названы так, вы можете также назвать их mykey или даже поместить в другой каталог. Однако, если вы сделаете любой из них, вам нужно явно указать ключ в команде ssh следующим образом:

ssh user@server -i /path/to/mykey

Если команда не принимает -i, например, sshfs, используйте опцию IdentityFile:

sshfs -o IdentityFile=/path/to/mykey user@host:/path/on/remote /mountpoint

Как это работает

При создании ключа вы получите два файла: id_rsa (закрытый ключ) и [ 1110] (открытый ключ). Как следует из их имен, закрытый ключ должен храниться в секрете, а открытый ключ может быть опубликован для общественности.

Аутентификация с открытым ключом работает с открытым и закрытым ключом. И клиент, и сервер имеют свои собственные ключи. При установке openssh-server открытый и закрытый ключи сервера генерируются автоматически. Для клиента вы должны будете сделать это самостоятельно.

Когда вы (клиент) подключаетесь к серверу, обмениваются открытыми ключами. Вы получите один сервер, а сервер ваш. При первом получении открытого ключа сервера вам будет предложено принять его. Если этот открытый ключ со временем изменится, вы будете предупреждены, потому что возможна атака MITM (Человек посередине), перехватывающая трафик между клиентом и сервером.

Сервер проверяет, разрешено ли вам подключение (определено в /etc/ssh/sshd_config) и указан ли ваш открытый ключ в файле ~/.ssh/authorized_keys. Возможные причины отказа в использовании открытого ключа:

  • /etc/ssh/sshd_config:
    • AllowUsers или AllowGroups, но пользователь вашего сервера не указан в группах или пользователях. список (по умолчанию не определено, не ограничивая пользователей или группы от входа в систему).
    • DenyUsers или DenyGroups указано, и вы в списке пользователей или групп.
    • Вы пытаетесь войти в систему как root, но для PermitRootLogin установлено значение No (по умолчанию yes).
    • PubkeyAuthentication установлено на No (по умолчанию yes).
    • AuthorizedKeysFile установлено в другом месте, и открытые ключи не добавляются в этот файл (по умолчанию .ssh/authorized_keys относительно home dir)
  • ~/.ssh/authorized_keys: Ваш открытый ключ не добавляется в этот файл (обратите внимание, что этот файл читается как пользователь root)

Использование нескольких ключей

Нередко использовать несколько ключей. Вместо запуска ssh user@host -i /path/to/identity_file вы можете использовать файл конфигурации, ~/.ssh/config.

Общие настройки - это IdentityFile (ключи) и порт. Следующая конфигурация будет проверять «id_dsa» и «bender» только при соединении с ssh youruser@yourhost:

Host yourhost
   IdentityFile ~/.ssh/id_dsa
   IdentityFile ~/.ssh/bender

Если вы опустите Host yourhost, настройки будут применяться ко всем SSH-соединениям. Другие параметры также могут быть указаны для этого соответствия хоста, например User youruser, Port 2222 и т. Д. Это позволит вам соединиться с сокращением ssh yourhost вместо ssh -p2222 youruser@yourhost -i ~/.ssh/id_dsa -i ~/.ssh/bender.

0
ответ дан 17 March 2011 в 18:37

Другие вопросы по тегам:

Похожие вопросы: