Назад | Перейти на главную страницу

ssh-add не действует

Я пытаюсь добавить SSH-доступ без пароля к моей Mac OS X 10.8.3, которая действует как сервер. Я выполнил следующие инструкции:

http://osxdaily.com/2012/05/25/how-to-set-up-a-password-less-ssh-login/

Но когда я делаю ssh user@myserver.com, мне все равно предлагается ввести пароль.

Посмотрев на:

https://superuser.com/questions/419122/how-to-use-ssh-private-key-to-log-in-without-entering-passphrase-every-time-on-m

Когда я выполняю ssh-add на своей клиентской машине, я получаю:

[michael@varga (Sun May 26 09:56:32) ~]% ssh-add
Enter passphrase for /Users/michael/.ssh/id_rsa: 

НО, когда я попытался использовать команду ssh-add в командной строке на сервере, и она просто ничего не сделала:

[michael@maz (Sun May 26 10:00:25) ~]% ssh-add
[michael@maz (Sun May 26 10:01:03) ~]% ssh-add -K 

Я думаю, что это может иметь какое-то отношение к проблеме, с которой у меня все еще требуется вводить пароль.

Есть предложения, как исправить ssh-add?

Вам не нужно бежать ssh-add или ssh-agent на вашем сервере.

Ты должен бежать ssh-agent на вашем клиенте (varga). Это создаст сокет для ssh программа для проверки разблокировки ключа. ssh-agent напечатает вам некоторые переменные среды, которые вам нужно будет определить - обычно вы делаете это с eval $(ssh-agent), который одновременно запускает агент и экспортирует все необходимые переменные.

Как я понял из вашего вопроса, ssh-add запрашивает пароль и добавляет ключ к агенту, это означает, что агент запущен и все эти переменные экспортируются (по крайней мере, в оболочке, которую вы используете для запуска ssh-add). Но теперь сделать ssh увидеть агент, который вы должны убедиться, что эти переменные также экспортируются в сеансе, в котором вы запускаете ssh.

Дело в том, что ssh-add не запрашивает пароль, когда вы запускаете его на сервере, означает, что агент работает на сервере (он вам не нужен), и просто нет ключей для добавления, поэтому он тихо завершает работу.

Почему ssh на клиенте спрашивает пароль? Вероятно, потому что вы добавили агенту неправильный ключ. Вы уверены, что можете авторизоваться на сервере используя ключевой файл? Вы уверены, что когда вы пытаетесь войти в систему, он запрашивает пароль ключевого файла, а не обычный пароль пользователя? Сначала убедитесь, что аутентификация с помощью Pulbic-key работает.

Я предполагаю одно из двух.

Либо у вас на сервере не запущен ssh-агент. ЧТОБЫ убедиться, что на сервере запущен ssh-agent, проверьте, установлена ​​ли переменная среды SSH_AUTH_SOCK:

echo $SSH_AUTH_SOCK

Другая возможность заключается в том, что вы неправильно поняли, как должны работать пары ключей ssh. Вы установили свой открытый ключ на сервере? Если у вас есть ssh-copy-id, это очень просто. На клиенте:

ssh-copy-id user@server

Если нет, вам нужно вставить содержимое ~ / .ssh / id_rsa.pub на клиенте в ~ / .ssh / authorized_keys на сервере. Например. (при условии, что на сервере не установлены другие ключи):

scp ~/.ssh/id_rsa.pub user@server:.ssh/authorized_keys
ssh user@server chmod 0600 .ssh/authorized_keys

Способ диагностировать это - запустить ssh с подробным выводом:

ssh -v user@host

Он должен показать вам, что пары ключей могут использоваться для аутентификации:

debug1: Authentications that can continue: publickey,password

Что он на самом деле пытается аутентифицироваться с помощью ключа:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/$user/.ssh/id_rsa

И что аутентификация с открытым ключом прошла успешно:

debug1: Authentication succeeded (publickey).