Ответы:
Для каждого пользователя: он должен сгенерировать (на своей локальной машине) свою пару ключей, используя ssh-keygen -t rsa
( rsa
можно заменить dsa
или rsa1
слишком, хотя эти опции не рекомендуются). Затем они должны поместить содержимое своего открытого ключа ( id_rsa.pub
) ~/.ssh/authorized_keys
на сервер, на котором выполняется вход.
Я на самом деле предпочитаю ssh-copy-id , скрипт, найденный в * nix по умолчанию (его также можно легко установить в Mac OS X ), который автоматически сделает это за вас. Со страницы руководства:
ssh-copy-id - это скрипт, который использует ssh для входа на удаленный компьютер (предположительно, с использованием пароля для входа в систему, поэтому аутентификация по паролю должна быть включена, если вы не сделали несколько умных попыток использовать несколько идентификаторов)
Он также изменяет права доступа к домашнему файлу удаленного пользователя, ~ / .ssh и ~ / .ssh / authorized_keys, чтобы удалить возможность записи группы (в противном случае вы не могли бы войти в систему, если в удаленной конфигурации sshd установлены StrictModes).
Если задана опция -i, то используется файл идентификации (по умолчанию ~ / .ssh / identity.pub), независимо от того, есть ли какие-либо ключи в вашем ssh-agent.
Хм, не понимаю. Просто создайте ключ и начните. :) HOWTO Кроме того, вы можете запретить вход через пароль. Например, в / etc / ssh / sshd_config:
PasswordAuthentication no
Это довольно прямо вперед , чтобы сделать - есть простое пошаговое руководство , чтобы быть здесь .
Основными моментами являются:
ssh-keygen
на своей машине. Это сгенерирует для вас открытый и закрытый ключи.~/.ssh/id_rsa.pub
) ~/.ssh/authorized_keys
на удаленный компьютер.Важно помнить, что это даст любому, кто имеет доступ к закрытому ключу на вашем компьютере, такой же доступ к удаленному компьютеру, поэтому при создании пары ключей вы можете ввести здесь пароль для дополнительной безопасности.
Для пользователей Windows, чтобы установить замазку
Подводя итог тому, что сказали другие, настройка ключей SSH проста и бесценна.
На компьютере , который будет SSHing от вас потребуется сгенерировать пару ключей:
claudius:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dinomite/.ssh/id_rsa): <ENTER>
Enter passphrase (empty for no passphrase): <PASSPHRASE>
Enter same passphrase again: <PASSPHRASE>
Your identification has been saved in /home/dinomite/.ssh/id_rsa.
Your public key has been saved in /home/dinomite/.ssh/id_rsa.pub.
The key fingerprint is:
a3:93:8c:27:15:67:fa:9f:5d:42:3a:bb:9d:db:93:db dinomite@claudius
Просто нажмите Enter там, где отмечено, и введите пароль при появлении запроса - в идеале это отличается от вашего обычного пароля входа в систему как на текущем хосте, так и на тех, к которым вы будете подключаться по SSH.
Затем вам нужно скопировать только что сгенерированный ключ на хост, к которому вы хотите подключиться по SSH . В большинстве дистрибутивов Linux есть инструмент ssh-copy-id
для этого:
claudius:~$ ssh-copy-id caligula.dinomite.net
Now try logging into the machine, with "ssh 'caligula.dinomite.net'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Если в вашем дистрибутиве этого нет, скопируйте ключ на хост назначения и добавьте его в (возможно, существующий) .ssh/authorized_keys
файл:
claudius:~$ scp .ssh/id_dsa.pub caligula.dinomite.net:
id_dsa.pub 100% 1119 1.1KB/s 00:00
claudius:~$ ssh caligula.dinomite.net
Last login: Sat May 9 10:32:30 2009 from claudius.csh.rit.edu
Caligula:~$ cat id_dsa.pub >> .ssh/authorized_keys
Наконец, чтобы получить максимальную выгоду от ключей SSH, вам нужно запустить агент SSH. Если вы используете среду рабочего стола (Gnome, KDE и т. Д.), То просто выйдите из системы и войдите снова, чтобы запустить для вас SSH-агент. Если нет, вы можете добавить следующее в RC-файл оболочки ( .bashrc
, .profile
и т. Д.):
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
Это задумано как контрольный список. Если следовать ему поэтапно, следует охватить наиболее распространенные ошибки, связанные с входом без пароля. Большинство из этих пунктов упоминаются в другом месте; это совокупность.
На каждой машине должен быть ~/.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=server1 server2 server3 server4
for r in $remote; do echo connecting to $r; tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh $r "tar zxf -; chmod 700 .ssh" ; done
Просто перейдите в ваш домашний каталог, определите переменную remote как одно или несколько имен серверов и сделайте кучу сразу. Пароль, который он запрашивает, будет вашим ssh-паролем для удаленного сервера. Конечно, вы можете использовать упрощенную версию без цикла for:
tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh YOUR_SERVER_NAME_HERE "tar ztvf -; chmod 700 .ssh"
ПОМНИТЕ: Скопируйте только свои открытые ключи. Вы не хотите, чтобы ваши закрытые ключи находились на каком-то сервере, где любой, кто имеет sudo, может скопировать их и перебрать вашу парольную фразу.