Rambler's Top100
ГлавнаяО себеФоткиРазбиралкиМарафон
Карта

Разбиралки с SSH

Как не набирать часто пароль?

Проблема:

Есть локальный хост А, есть удаленный хост Б. Доступ от А к Б осуществляется по протоколу SSH. В ходе работы на А требуется многократный набор пароля для выполнения команд на Б. Беcпарольный вход на Б с А настраивать не следует, поскольку к login'у на А, из под которого выполняются работы, имеют доступ нежелательные элементы, которых мы не хотим видеть на Б.

Решение:

Воспользуемся ssh-agent'ом и ssh-add'ом. ssh-agent осуществляет прозрачный (беспарольный) доступ запущенного из под него приложения (/bin/bash) к удаленному хосту. Для этого необходимо с помощью ssh-add сообщить ssh-agent'у приватный ключ соединения. После этого у нас появится возможность без введения пароля заходить на хосты, которые имеют соответствующий публичный ключ.

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

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

Проще говоря:

На хосте А:
  1. bash% cd ~/.ssh
  2. bash% ssh-keygen -t rsa - генерируем пару ключей.
  3. В ходе процесса создания ключей задаем имена файлов на выходе id_rsa.ex и id_rsa.ex.pub, чтоб файлы с именами поумолчанию (id_rsa и id_rsa.pub) не затерли одноименные уже существующие,
  4. там же зададим пароль на ключи.
  5. scp id_rsa.ex.pub user@hostb:~/.ssh - копируем ключ c хоста А на Б.
    На хосте Б:
  6. bash% cd ~/.ssh
  7. cat id_rsa.cvs.pub >> authorized_keys2
    Далее на А:
  8. Выполняем: bash% ssh-agent /bin/bash - ssh-agent запускает своим клиентом шелл.
  9. Выполняем в этом же шелле: bash% ssh-add ./id_rsa.ex. У нас спрашивают пароль, который мы задали при генерации id_rsa.ex. Вводим этот пароль и далее имеем из этого шелла беспарольный вход на все машины, куда мы поместили публичный ключ id_rsa.ex.pub.
  10. При окончании работы не забываем сделать: bash% ssh-agent -t (убиваем ssh-agent'а), чтоб злоумышленник не пробрался.
[Top]

Как про него вообще забыть?

Проблема:

Есть хост А, с которого мы часто обращаемся по SSH на Б. Нам лень вводить пароль. К логину на А имеем доступ только мы. Как бы сделать так, чтобы пароль вообще не вводить, работая с SSH.

Решение:

Тут вообще все просто!!! Забываем про всяких агентов, описанных выше, на все предложения ввести пароль жмем ентер. Получается:

    На хосте А:
  1. bash% cd ~/.ssh
  2. bash% ssh-keygen -t rsa - генерируем пару ключей.
  3. На вопрос задать имя файла жмем ентер - остается имя по умолчанию id_rsa.
  4. На просьбу задать пароль говорим ентер. В итоге получаем два файла: id_rsa - приватный ключ, id_rsa.pub - публичный ключ.
  5. scp id_rsa.pub user@hostb:~/.ssh - копируем публичный ключ c хоста А на Б.
    На хосте Б:
  6. bash% cd ~/.ssh
  7. cat id_rsa.cvs.pub >> authorized_keys2

Теперь с хоста А на хост Б можно ходить вообще без пароля, да и на другие хосты, с которыми мы проделали манипуляции те же что и на хосте Б! Одно плохо - можно забыть пароль. :-) И еще: злоумышленник, зашедший под Вашим логином на хост А, тут же получает доступ к хосту Б.

[Top]

Смотри еще:
ГлавнаяО себеФоткиРазбиралкиМарафон
Карта

Обратная связь: otokarev@ngs.ru

Rambler's Top100

Hosted by uCoz