На локальном хосте работает служба sshd. Созданы две пары ключей rsa для root
и user1
используя ssh-keygen. Скопировано из root / .ssh / id_rsa.pub в user1 / .ssh / id_rsa.pub. Сменил разрешения на 600. Пробовал ssh -l user1 localhost
и ssh -l root localhost
но оба потерпели неудачу с В доступе отказано (открытый ключ, интерактивная клавиатура).. Нужно ли копировать открытый ключ в ~/.ssh
папка для обоих пользователей? Что не так с конфигурацией? Почему я не могу подключиться к localhost?
файл /etc/ssh/sshd_config
:
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication yes
UsePAM no
AllowUsers user1 root
PermitRootLogin yes
В файле /etc/ssh/ssh_config
это раскомментированные строки:
RSAAuthentication yes
PasswordAuthentication no
ForwardX11 no
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
GSSAPIDelegateCredentials no
PubkeyAuthentication yes
ИЗМЕНИТЬ 1
Я пытаюсь подключиться к localhost. Я должен иметь возможность войти в систему user1, используя только открытый ключ, хотя можно войти в систему как root с открытым ключом и / или паролем.
РЕДАКТИРОВАТЬ 2
Я скопировал cp ~/.ssh/id_rsa.pub /home/user1/.ssh/authorized_keys
. Изменены разрешения chmod -R 700 ~/.ssh
и chmod -R 700 /home/user1/.ssh
. Перезапустил sshd 'service ssh restart'. Но вроде не работает.
РЕДАКТИРОВАТЬ 4
root@ubuntu:~# ssh-copy-id user1@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is 34:29:b6:1b:fe:84:eb:82:85:77:87:f6:25:39:61:5a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Permission denied (publickey,keyboard-interactive).
root@ubuntu:~# ssh-copy-id root@localhost
Permission denied (publickey,keyboard-interactive).
Журнал:
# tail /var/log/auth.log
... ubuntu sshd[8476]: User root not allowed because account is locked
Хорошая статья по устранению неполадок SSH: Проблемы и решения
Я столкнулся с этой проблемой, когда попытался войти в учетную запись, у которой нет пароля, хотя я использую аутентификацию по паре ключей SSH и пароль для входа в систему отключен. Решением было установить пароль, используя мою учетную запись root:
passwd user1
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Когда вы сталкиваетесь с проблемой ssh'ing на сервере, всегда лучше добавить -v
флаг, например
$ ssh -v host -l user
В обоих вышеупомянутых случаях открытый ключ (id_rsa.pub
) следует добавить в файл .ssh / authorized_keys удаленного пользователя. В вашем случае выше как root, так и user1. Это легко сделать с помощью ssh-copy-id команда.
/var/log/secure
будет содержать подсказки относительно того, почему вход в систему не был успешным.
Разрешения каталога должны быть 700 [rwx] (не 600) [rw-]
Некоторое время назад я столкнулся с аналогичной проблемой, попробуйте сделать
chmod -R 600 ~/.ssh
По-видимому, если права доступа к файлам правильные, но разрешения каталога не совпадают, может возникнуть ошибка разрешений.
Еще думаю, что нужно переименовать файл из id_rsa.pub в authorized_keys.
Некоторые примечания: Поскольку вы специально отключили аутентификацию по паролю, вы не можете войти с паролем. Я считаю, что вам нужно настроить разрешенных пользователей с некоторыми другими (Match User, возможно, лучший способ двигаться вперед). Кроме того, вам нужно специально разрешить пользователю root (PermitRootLogin установите его в yes).
Имеет смысл дать нам дополнительную информацию о настройках в /etc/ssh/sshd_config
, в частности StrictModes
(grep StrictModes /etc/ssh/sshd_config
). StrictModes
настройка, определяющая, насколько чувствительны sshd
реагирует на права доступа к файлам и папкам каждого пользователя. ~/.ssh
и ~/.ssh/authorized_keys
. Вы также не дали нам настройку AuthorizedKeysFile
в твоем sshd_config
. Очень актуально, если ваш SSH-сервер ищет файл в другом месте, чем вы его поместили.
Но помимо ответов на этот вопрос, для этого может быть множество причин. Проблема в том, что даже несмотря на то, что вы пытались, информации недостаточно, чтобы точно догадаться, что не так.
Еще одна вещь может быть ограничение PAM (UsePAM
в sshd_config
). Раньше это было в Ubuntu. Если для учетной записи пользователя не установлен пароль (аутентификация только с открытым ключом), он не будет разрешен.
Но позвольте мне дать вам общий метод отладки таких проблем.
sshd
В таких случаях я считаю очень полезным начать sshd
не позволяя ему демонизировать («перейти в фоновый режим и отсоединиться от терминала»). Часто журналы не слишком полезны, особенно если у вас есть ошибка конфигурации (что, по крайней мере, не является очевидным случаем).
Вы запускаете его из терминала так:
# $(which sshd) -Ddp 10222
Это даст вам много отладочной информации, которая иначе не появилась бы (без -d
) или попадут в журналы, если вам повезет.
NB: в $(which sshd)
лучший способ удовлетворить sshd
требование абсолютного пути. В противном случае вы получите следующую ошибку: sshd re-exec requires execution with an absolute path
. В -p 10222
делает sshd
прослушивать этот альтернативный порт, переопределяя файл конфигурации - так, чтобы он не конфликтовал с потенциально запущенным sshd
экземпляры. Обязательно выберите здесь свободный порт.
Этот метод много раз помогал мне в поиске проблем, будь то проблемы с аутентификацией, проблемы с производительностью или другие типы проблем. Чтобы получить действительно подробный вывод в stdout
, используйте $(which sshd) -Ddddp 10222
(обратите внимание на добавленный dd
для увеличения многословности). Для дополнительной проверки исправности отладки man sshd
.
На стороне клиента ssh
может взять -v
(вплоть до -vvv
), чтобы быть действительно подробным о том, что он делает.
Строка журнала
... ubuntu sshd[8476]: User root not allowed because account is locked
намекает на то, что проблема, поэтому запустите:
sudo passwd -u root
В CentOS selinux может блокировать аутентификацию. Для решения проблемы используйте команду:
restorecon -Rv ~ /. ssh