Как настроить ssh для аутентификации пользователя, используя ключи вместо имени пользователя / пароля?
34
Для каждого пользователя: он должен сгенерировать (на своей локальной машине) свою пару ключей, используя ssh-keygen -t rsa
( rsa
можно заменить dsa
или rsa1
слишком, хотя эти опции не рекомендуются). Затем они должны поместить содержимое своего открытого ключа ( id_rsa.pub
) ~/.ssh/authorized_keys
на сервер, на котором выполняется вход.
Я на самом деле предпочитаю ssh-copy-id , скрипт, найденный в * nix по умолчанию (его также можно легко установить в Mac OS X ), который автоматически сделает это за вас. Со страницы руководства:
источник
Хм, не понимаю. Просто создайте ключ и начните. :) HOWTO Кроме того, вы можете запретить вход через пароль. Например, в / etc / ssh / sshd_config:
источник
Это довольно прямо вперед , чтобы сделать - есть простое пошаговое руководство , чтобы быть здесь .
Основными моментами являются:
ssh-keygen
на своей машине. Это сгенерирует для вас открытый и закрытый ключи.~/.ssh/id_rsa.pub
)~/.ssh/authorized_keys
на удаленный компьютер.Важно помнить, что это даст любому, кто имеет доступ к закрытому ключу на вашем компьютере, такой же доступ к удаленному компьютеру, поэтому при создании пары ключей вы можете ввести здесь пароль для дополнительной безопасности.
источник
Для пользователей Windows, чтобы установить замазку
источник
Подводя итог тому, что сказали другие, настройка ключей SSH проста и бесценна.
На компьютере , который будет SSHing от вас потребуется сгенерировать пару ключей:
Просто нажмите Enter там, где отмечено, и введите пароль при появлении запроса - в идеале это отличается от вашего обычного пароля входа в систему как на текущем хосте, так и на тех, к которым вы будете подключаться по SSH.
Затем вам нужно скопировать только что сгенерированный ключ на хост, к которому вы хотите подключиться по SSH . В большинстве дистрибутивов Linux есть инструмент
ssh-copy-id
для этого:Если в вашем дистрибутиве этого нет, скопируйте ключ на хост назначения и добавьте его в (возможно, существующий)
.ssh/authorized_keys
файл:Наконец, чтобы получить максимальную выгоду от ключей SSH, вам нужно запустить агент SSH. Если вы используете среду рабочего стола (Gnome, KDE и т. Д.), То просто выйдите из системы и войдите снова, чтобы запустить для вас SSH-агент. Если нет, вы можете добавить следующее в RC-файл оболочки (
.bashrc
,.profile
и т. Д.):источник
Это задумано как контрольный список. Если следовать ему поэтапно, следует охватить наиболее распространенные ошибки, связанные с входом без пароля. Большинство из этих пунктов упоминаются в другом месте; это совокупность.
На каждой машине должен быть
~/.ssh
каталогchmod 700
под учетной записью, которая будет отправлять или получать соединения.(Закрытый) ключ должен быть создан без ключевой фразы, или может быть запущен агент, который будет содержать дешифрованную версию ключа, содержащего ключевую фразу, для использования клиентами. Начать агент с
ssh-agent $SHELL
. Это$SHELL
часть, которая заняла у меня некоторое время, чтобы найти. Посмотрите справочную страницу, так как есть много разных деталей, если вы хотите использовать агента.Не забывайте, что по умолчанию слабые (<2048 бит DSA) ключи не принимаются в последних версиях sshd.
Далее должны быть сделано на стороне клиента машине происходит соединение.
Ваш закрытый ключ должен быть помещен в
~/.ssh/id_rsa
или~/.ssh/id_dsa
как нужно . Вы можете использовать другое имя, но затем оно должно быть включено в опцию -i команды ssh на исходной машине, чтобы явно указать закрытый ключ.Ваш закрытый ключ должен быть
chmod 600
.Проверьте, что ваша домашняя папка
chmod 700
.Теперь для того, чтобы разрешить машине получать запрос. Распространенная модель - это когда администратор предоставляет вам доступ к машине, которой вы не владеете (например, общий веб-хостинг). Поэтому идея с ssh заключается в том, что вы предлагаете свой открытый ключ тому, кто дает вам учетную запись. Вот почему вы обычно не ставите закрытые ключи на машину, получающую запросы. Но если вы хотите, чтобы эта машина также выполняла исходящий ssh, то вы должны рассматривать ее как исходную машину с шагами, описанными выше.
~/.ssh/authorized_keys
под учетной записью, которая будет получать соединения. Здесь вы также можете разместить другие ключи, которым разрешено подключаться через эту учетную запись. Особенно сложно, если вы находитесь в vi и вставляете ключ в файл из буфера вставки в PuTTY, это то, что ключ начинается с «ssh-». Если вы не находитесь в режиме вставки, первые "s" переведут vi в режим вставки, а остальная часть ключа будет выглядеть просто отлично. Но в начале ключа вам будет не хватать «s». Мне потребовались дни, чтобы найти это.chmod 600 ~/.ssh/authorized_keys
. Это должно быть как минимум gw.источник
Как уже говорили другие, ваши пользователи должны сами создавать пары ключей на своих клиентских компьютерах с помощью ssh-keygen и добавлять свой открытый ключ в ~ / .ssh / authorized_keys на компьютере, на который они хотят войти.
Для более подробной информации я настоятельно рекомендую SSH, Secure Shell .
источник
Здесь есть хороший совет, поэтому я не буду его повторять. После того, как вы настроите один сервер, чтобы разрешить вход в систему с помощью ключей, вы можете настроить другие так же с этим одним вкладышем:
Просто перейдите в ваш домашний каталог, определите переменную remote как одно или несколько имен серверов и сделайте кучу сразу. Пароль, который он запрашивает, будет вашим ssh-паролем для удаленного сервера. Конечно, вы можете использовать упрощенную версию без цикла for:
ПОМНИТЕ: Скопируйте только свои открытые ключи. Вы не хотите, чтобы ваши закрытые ключи находились на каком-то сервере, где любой, кто имеет sudo, может скопировать их и перебрать вашу парольную фразу.
источник