it-swarm.xyz

Разрешения на закрытый ключ в папке .ssh?

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

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

[email protected] 1 Jody  staff   114 Nov  4 23:29 config
-rw-------  1 Jody  staff  1743 Oct 21  2009 id_rsa
[email protected] 1 Jody  staff   397 Oct 21  2009 id_rsa.pub 
[email protected] 1 Jody  staff  3855 Sep 13 22:35 known_hosts
351
Jody G

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

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

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

585
tab33

Я боролся с этим вечно и наконец понял, что нужно. Замените $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 [email protected]
82
Alex W

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

chmod g-w,o-w ~

35
Felipe Alvarez

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

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

5
cdhowie

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

4
mikentalk