330

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

В настоящее время мои разрешения установлены на:

-rw-------@ 1 Jody  staff   114 Nov  4 23:29 config
-rw-------  1 Jody  staff  1743 Oct 21  2009 id_rsa
-rw-------@ 1 Jody  staff   397 Oct 21  2009 id_rsa.pub 
-rw-------@ 1 Jody  staff  3855 Sep 13 22:35 known_hosts

5 ответов5

555

Обычно вы хотите, чтобы разрешения были:

  • Каталог .ssh : 700 (drwx------)
  • открытый ключ (файл .pub): 644 (-rw-r--r--)
  • закрытый ключ (id_rsa): 600 (-rw-------)
  • наконец, ваш домашний каталог не должен быть доступен для записи группе или другим пользователям (не более 755 (drwxr-xr-x)).

Я предполагаю, что вы имеете в виду, что вы должны вводить системный / пользовательский пароль каждый раз, а ранее вам не приходилось. Ответ cdhowie предполагает, что вы задали пароль / фразу-пароль при генерации ключей, и если вы это сделали, то, как он говорит, вам придется вводить пароль каждый раз, если вы не используете агент ssh.

78

Я боролся с этим навсегда и наконец понял, что нужно. Замените $USER везде на имя пользователя SSH, в которое вы хотите войти на сервере. Если вы пытаетесь войти в систему как пользователь root вам нужно использовать /root/.ssh и т.д. Вместо /home/root/.ssh как это делается для пользователей без полномочий root.

  • Домашний каталог на сервере не должен быть доступен для записи другим пользователям: chmod go-w /home/$USER
  • Папка SSH на сервере требует 700 разрешений: chmod 700 /home/$USER/.ssh
  • Для файла Authorized_keys необходимо 644 разрешения: chmod 644 /home/$USER/.ssh/authorized_keys
  • Убедитесь, что user принадлежат файлы / папки, а не root: chown user:user authorized_keys и chown user:user /home/$USER/.ssh
  • Поместите сгенерированный открытый ключ (из ssh-keygen) в файл authorized_keys пользователя на сервере.
  • Убедитесь, что домашний каталог пользователя установлен так, как вы ожидаете, и содержит правильную папку .ssh которую вы изменяли. Если нет, используйте usermod -d /home/$USER $USER для решения проблемы
  • Наконец, перезапустите ssh: service ssh restart
  • Затем убедитесь, что у клиента есть файлы с открытым ключом и закрытым ключом в папке .ssh локального пользователя, и войдите в систему: ssh user@host.com
34

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

chmod g-w,o-w ~

5

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

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

4

Фелипе прав: каталог, содержащий ваш каталог .ssh, не должен быть доступен для записи ни группе, ни другим. Таким образом, chmod go-w ~ - это следующая логическая вещь, которую нужно попробовать, если вам все еще предлагается пароль при ssh'ing после запуска ssh-keygen -t rsa; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys , при условии, что вы не назначаете фразу-пароль в команде ssh-keygen, а ваш каталог .ssh находится в вашем домашнем каталоге.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .