Почему SSH не использует мои авторизованные ключи?

7587
pnongrata

У меня дома 2 ноутбука, на обоих работает Ubuntu 12.04 (Desktop), и оба используют один и тот же Wi-Fi-маршрутизатор NetGear. Я использовал метод под названием «MAC-привязка» на одной из машин, чтобы маршрутизатор всегда назначал ему один и тот же IP-адрес 192.168.1.52 при каждой попытке подключения к Интернету. ( Не связано: привязка MAC-адреса означает только настройку маршрутизатора для постоянной привязки определенного MAC-адреса к определенному IP-адресу. )

Итак, у меня есть 1 ноутбук, которому всегда присваивается случайный IP-адрес в диапазоне от 192.168.1.1 до 192.168.1.50, и 1 ноутбук (мой «сервер сборки»), которому всегда назначается 192.168.1.52.

Я пытаюсь написать сценарий bash, который я буду запускать на «клиентском» ноутбуке (случайном IP-компьютере), который будет sshподключен к серверу сборки (192.169.1.52); отсюда необходимость для сервера сборки иметь «выделенный» IP из моей локальной сети. Я не хочу явно указывать пароль для этих скриптов bash, поэтому я следовал инструкциям в этой статье, чтобы сгенерировать ключи SSH. В частности, я:

  1. Генерация ключей SSH на моем клиентском ноутбуке (создание id_rsa.pubфайла)
  2. Я scpпоместил id_rsa.pubфайл на свой сервер сборки и catпоместил его в ~/.ssh/authorized_keysфайл. Я проверил, что ключ SSH моего клиентского ноутбука теперь существует внутри authorized_keysфайла на сервере сборки.
  3. Я закрыл терминал на своем клиентском ноутбуке, а затем снова открыл новый, просто для хорошей меры (на случай, если Linux понадобится, чтобы что-нибудь перезапустить и т. Д.)
  4. Затем я попытался подключиться по SSH к серверу сборки, и мне все еще предлагается пароль!

Что тут происходит? Почему SSH на моем сервере сборки не поддерживает авторизованные ключи от моего клиентского ноутбука? Нужно ли перезапускать что-либо на сервере сборки ( sshdи т. Д.)? Я пропустил какие-либо важные шаги здесь? Как начать устранение неполадок? Заранее спасибо!

Обновление : Видимо Ubuntu не имеет /var/log/secure.log, но это есть /var/log/auth.log. Когда я подключаю этот журнал на сервере сборки, а затем пытаюсь подключиться к серверу сборки SSH с моего клиентского ноутбука, вот что происходит:

  1. Я бегу ssh myuser@buildserverс клиентского ноутбука
  2. Мне предлагается пароль.
  3. Как только я ввожу пароль, я вижу следующий вывод в auth.logфайле сервера сборки :

 

May 21 12:02:07 buildserver sshd[28930]: error: RSA_public_decrypt failed: error:0407006A:lib(4):func(112):reason(106) May 21 12:02:10 buildserver sshd[28930]: pam_sm_authenticate: Called May 21 12:02:10 buildserver sshd[28930]: pam_sm_authenticate: username = [myuser] May 21 12:02:10 buildserver sshd[28930]: pam_sm_authenticate: /home/myuser is already mounted May 21 12:02:10 buildserver sshd[28930]: Accepted password for myuser from 192.168.1.3 port 39821 ssh2 May 21 12:02:10 buildserver sshd[28930]: pam_unix(sshd:session): session opened for user myuser by (uid=0) May 21 12:02:10 buildserver sshd[29003]: Received disconnect from 192.168.1.3: 11: disconnected by user May 21 12:02:10 buildserver sshd[28930]: pam_unix(sshd:session): session closed for user myuser 

Что-то, что, возможно, я должен был упомянуть: на обеих машинах (на клиентском ноутбуке и на моем сервере сборки имя пользователя / имя учетной записи myuser) - может ли Linux запутаться из-за одного и того же имени пользователя на обеих машинах?

3
Общий термин для «привязки MAC» - это * постоянное резервирование DHCP *. Darth Android 10 лет назад 1
Ваш открытый ключ начинается с `ssh-rsa` или` ---- BEGIN SSH2 PUBLIC KEY ---- `? Darth Android 10 лет назад 0
Первый, `ssh-rsa` ... это мой закрытый ключ? pnongrata 10 лет назад 0
Нет, это просто мои ключевые записи, но инструменты, кажется, всегда генерируют последний вид, и я всегда конвертирую их. Смотри мой ответ. Darth Android 10 лет назад 0
Вы используете `ssh-agent` для управления своим закрытым ключом? Работает ли это, если вы используете `SSH_AUTH_SOCK = 0 ssh buildserver`? Darth Android 10 лет назад 0

3 ответа на вопрос

6
Nathan C

Первый шаг: перезапустите SSH с /etc/init.d/sshd restart. Также убедитесь, что права доступа к файлу Authorized_users указаны правильно. Чтобы проверить, использовать chmod 600 ~/.ssh/authorized_keysи убедиться, что он принадлежит пользователю, вошедшему в систему как.

Спасибо @Nathan C (+1) - я попробовал оба предложения: я перезапустил `ssh` (через` sudo service ssh stop`, затем `sudo service ssh start`), а затем я изменил разрешения для` author_keys` с 700 до 750 Обратите внимание, что я перезапустил сервис под названием `ssh`, ** не **` sshd`, как вы предложили. Похоже, на моем сервере сборки не установлена ​​служба с именем `sshd` (помните, что это рабочий стол Ubuntu), так что * может ли это быть моей проблемой? * Если так, что за исправление? Если нет, то что-нибудь еще можно придумать? Еще раз спасибо! pnongrata 10 лет назад 1
Часть рабочего стола не имеет значения (поскольку это всего лишь графический интерфейс, который делает его «рабочим столом»). Есть ли в `/ var / log / secure.log` ссылка на ключ? Nathan C 10 лет назад 2
@TicketMonster - Вам также необходимо `cat id.pub >> авторизованный_кейс2`. В зависимости от того, включены ваши ssh-протоколы, вам понадобятся и «author_keys», и «authorized_keys2». Перезапуск службы не требуется, если вы не измените настройки ssh / sshd. nerdwaller 10 лет назад 1
Еще раз спасибо @NathanC (+1) - посмотрите мое обновление внизу моего оригинального вопроса и дайте мне знать, что вы думаете. pnongrata 10 лет назад 0
Спасибо @nerdwaller (+1) - я пока попробую. Одна вещь, хотя, если то, что вы говорите, является правдой, почему ни в одном из руководств типа «Как использовать ключи SSH» не упоминается `authorized_keys2`? Я немного скептически отношусь, потому что `id.pub` не мой закрытый ключ? Зачем мне на сервере сборки иметь свой закрытый ключ?!? Еще раз спасибо! pnongrata 10 лет назад 0
@TicketMonster `id.pub` - это ваш` pub`lic ключ. `id_rsa` должен быть вашим личным ключом. `authorized_keys2` ​​не является строго необходимым; Мои коробки с Ubuntu отлично работают с моими ключами в авторизованном ключе. Darth Android 10 лет назад 0
Хорошо, извините, ребята, я запутываю себя здесь: когда я использовал `ssh-keygen`, он сделал 2 файла:` id_rsa` и `id_rsa.pub`. `Id_rsa.pub` - это то, что установлено на сервере компоновки (которое я получил, просмотрев его, а затем присмотрев за ним). pnongrata 10 лет назад 0
Похоже, открытый ключ поврежден. Попробуйте скопировать это снова. При необходимости восстановите свою пару ключей и начните с нуля. Nathan C 10 лет назад 1
@TicketMonster Для записи `.ssh` должно быть` 700`, а `authorized_keys` должно быть` 600`. Что произойдет, если вы используете эти разрешения? Darth Android 10 лет назад 0
@DarthAndroid Ах, мои разрешения были неправильными. Обновил мой ответ с этим. Nathan C 10 лет назад 0
Я восстановил ключи, как предложил @NathanC - и теперь это работает! Спасибо всем!! pnongrata 10 лет назад 2
5
Ernestas

Для меня удаление id_rsa.pub помогло (я использовал ключ ~ / .ssh / id_rsa). Это было вызвано тем, что id_rsa.pub не соответствовал моему ключу id_rsa.

1
Darth Android

What format is your public key in?

I find a lot of tools generate keys like this:

---- BEGIN SSH2 PUBLIC KEY ---- Comment: "1024-bit RSA, converted from OpenSSH by me@example.com" AAAAB3NzaC1yc2EAAAABIwAAAIEA1on8gxCGJJWSRT4uOrR13mUaUk0hRf4RzxSZ1zRb YYFw8pfGesIFoEuVth4HKyF8k1y4mRUnYHP1XNMNMJl1JcEArC2asV8sHf6zSPVffozZ 5TT4SfsUu/iKy9lUcCfXzwre4WWZSXXcPff+EHtWshahu3WzBdnGxm5Xoi89zcE= ---- END SSH2 PUBLIC KEY ---- 

And my authorized_keys file always contained the key like this:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA1on8gxCGJJWSRT4uOrR13mUaUk0hRf4RzxSZ1zRbYYFw8pfGesIFoEuVth4HKyF8k1y4mRUnYHP1XNMNMJl1JcEArC2asV8sHf6zSPVffozZ5TT4SfsUu/iKy9lUcCfXzwre4WWZSXXcPff+EHtWshahu3WzBdnGxm5Xoi89zcE= 

(The public key concatenated together all on one line)

Спасибо @Darth Android (+1) - мой открытый ключ запускает `ssh-rsa`, а не стиль` ---- BEGIN ... `. Что это говорит вам? pnongrata 10 лет назад 0
Просто это не ответ. Извини :( Darth Android 10 лет назад 1

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