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

<p>я изменил свои разрешения в своей папке <code>.ssh</code>, и теперь, когда я использую часть программного обеспечения, которая использует мой закрытый ключ, мне приходится каждый раз вводить свой пароль. какими должны быть мои разрешения для моего файла <code>id\_rsa</code>, чтобы не вводить пароль каждый раз, когда я использую приложение, которое его использует?</p><p>в настоящее время мои разрешения установлены на:</p><pre><code>-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 </code></pre>

<p>обычно вы хотите, чтобы разрешения были:</p><ul> <li><code>.ssh</code> каталог: <code>700 (drwx------)</code></li> <li>открытый ключ (файл <code>.pub</code>): <code>644 (-rw-r--r--)</code></li> <li>закрытый ключ (<code>id\_rsa</code>): <code>600 (-rw-------)</code></li> <li>наконец, ваш домашний каталог не должен быть доступен для записи группе или другим пользователям (не более <code>755 (drwxr-xr-x)</code>).</li> </ul><p>я предполагаю, что вы имеете в виду, что вы должны вводить системный/пользовательский пароль каждый раз, а ранее вам не приходилось. ответ cdhowie предполагает, что вы задали пароль/фразу-пароль при генерации ключей, и если вы это сделали, то, как он говорит, вам придется вводить пароль каждый раз, если вы не используете агент ssh.</p>

<p>я боролся с этим вечно и наконец понял, что нужно. замените <code>$user везде на имя пользователя ssh, в которое вы хотите войти на сервере. если вы пытаетесь войти как root, вам нужно будет использовать /root/.ssh и т.д. вместо /home/root/.ssh, как это делается для пользователей без полномочий root. домашний каталог на сервере не должен быть доступен для записи другим пользователям: chmod go-w /home/$user</code></li> <li>папка ssh на сервере требует 700 разрешений: <code>chmod 700 /home/$user/.ssh для файла authorized_keys необходимо 644 разрешения: chmod 644 /home/$user/.ssh/authorized\_keys</code></li> <li>убедитесь, что <code>user</code> владеет файлами/папками, а не <code>root</code>: <code>chown user:user authorized\_keys</code> и <code>chown user:user /home/$user/.ssh поместите сгенерированный открытый ключ (из ssh-keygen) в файл authorized_keys пользователя на сервере убедитесь, что домашний каталог пользователя установлен так, как вы ожидаете, и содержит правильную папку .ssh, которую вы изменяли. если нет, используйте usermod -d /home/$user $user</code>, чтобы решить проблему</li> <li>наконец, перезапустите ssh: <code>service ssh restart</code></li> <li>затем убедитесь, что у клиента есть файлы с открытым ключом и закрытым ключом в папке <code>.ssh</code> локального пользователя, и войдите в систему: <code>ssh user@host.com</code></li> </ul>

<p>также убедитесь, что ваш домашний каталог не доступен для записи другим пользователям.</p><p><code>chmod g-w,o-w ~</code></p>

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

<p>фелипе прав: каталог, содержащий ваш каталог .ssh, не должен быть доступен для записи ни группе, ни другим. таким образом, <code>chmod go-w ~</code> - это следующая логическая вещь, которую нужно попробовать, если вам все равно будет предложено ввести пароль при ssh'ing после выполнения <code>ssh-keygen -t rsa; cp ~/.ssh/id\_rsa.pub ~/.ssh/authorized\_keys</code>, при условии, что вы не назначаете фразу-пароль в команде ssh-keygen, а каталог .ssh находится в вашем домашнем каталоге. ,.</p>