Я уже некоторое время использую аутентификацию с открытым ключом на удаленном сервере для удаленного использования оболочки, а также для монтирования sshfs. После форсирования umount моего каталога sshfs я заметил, что ssh начал запрашивать у меня пароль. Я попытался очистить удаленный .ssh / authorized_keys от любого упоминания локальной машины, и я очистил локальную машину от ссылок на удаленную машину. Затем я повторил свой ssh-copy-id, он запросил у меня пароль и вернулся нормально. Но, о чудо, когда я ssh к удаленному серверу, мне все равно предлагается пароль. Я немного озадачен тем, что может быть проблемой, какие-либо предложения?
28
~
,~/.ssh
и~/.ssh/authorized_keys
, бежатьssh -vvv server.example.com
и сообщить о выходе (анонимные имена хостов и пользователей , если вы хотите). Если у вас есть root-доступ на сервере, посмотрите записи журнала, созданные при попытке входа с открытым ключом.Ответы:
sshd получает странные сведения о разрешениях для $ HOME, $ HOME / .ssh (оба каталога) и для $ HOME / .ssh / authorized_keys.
Одна из моих Linux-коробок оказалась с правами drwxrwxrwx в моем каталоге $ HOME. Ящик Arch Linux абсолютно не будет входить в систему с использованием открытых ключей, пока я не удалю разрешение 'w' для группы, другое в моем каталоге $ HOME.
Попробуйте сделать так, чтобы $ HOME и $ HOME / .ssh / имели более строгие разрешения для группы и других. Посмотрим, не позволит ли это сделать sshd.
источник
ssh-copy-id
должен был позаботиться о разрешениях~/.ssh
и~/.ssh/authorized_keys
, но также убедиться, что сам домашний каталог не доступен для записи в группах.chmod g-w homedir
на удаленном сервере работал как прелесть.Требуются следующие разрешения:
.ssh
Папка:700 (drwx------)
644 (-rw-r--r--)
600 (-rw-------)
источник
Недавно я тоже столкнулся с этой проблемой.
Это было исправлено путем изменения разрешений
$HOME
каталога. Тем не менее, просто запускchmod g-w ~/
не решил проблему. Кроме того , чтобыchmod g-w ~/
я также необходимо изменить праваothers
на$HOME
каталог, выполнивchmod o-wx ~/
Все вместе:
Обратите внимание, что я не уверен, было ли
o-x
это необходимо, я просто использовал его в качестве меры предосторожности.источник
Изменение разрешений для папки ~ / .ssh решило мою проблему согласно этому посту на Super User SE .
источник
Возникает ли проблема также при параллельном входе в систему, т.е. если вы пытаетесь смонтировать sshfs во время открытого сеанса ssh? Если нет, то я бы предположил, что у вас есть домашний каталог в зашифрованном виде? В этом случае
$HOME/.ssh/authorized_keys
станет доступным для использования на удаленном компьютере только после первого входа в систему (используя ваш пароль).Обратитесь к https://help.ubuntu.com/community/SSH/OpenSSH/Keys# Устранение неполадок для получения объяснения и необходимого обходного пути.
источник
Я бы опубликовал это как комментарий, но, вероятно, это было бы слишком долго. Я просто хотел добавить, что
ssh-copy-id
пытается отправить открытый ключ из папки/.ssh
внутри вашей$HOME
папки.Если вы пытаетесь войти в систему
ssh
как пользователь root с открытым ключом (сохраните комментарии, связанные с безопасностью),ssh-copy-id
возможно, вы пытаетесь войти в систему с неправильным открытым ключом, если для вашей$HOME
переменной установлено значение, отличное от/root
(например, для домашнего каталога обычного пользователя) ), таким образом, пользователю root будет предложено, потому что открытый ключ root не установлен в удаленной системе.Вы можете использовать следующую однострочную строку для указания точного открытого ключа:
pub="$(cat /root/.ssh/id_rsa.pub)"; ssh user@remotehost "echo $pub >> .ssh/authorized_keys; chmod 700 .ssh; chmod 600 .ssh/authorized_keys"
Я сталкивался с этим сценарием в дикой природе несколько раз (включая это утро) и подумал, что постараюсь поставить свои 2 цента, на случай, если кто-нибудь окажется в такой же ситуации.
источник
Как упоминали другие участники, это, вероятно, проблема с разрешениями.
Лучший способ диагностировать это - перезапустить демон SSH на удаленном сервере с включенной опцией отладки - обычно это опция -d. Демон OpenSSH очень явный. Например, вы увидите такие сообщения:
источник
Причина, по которой открытый ключ не сохранился после перезагрузки, заключалась в том, что домашний каталог моего сервера был зашифрован. (вы делаете это при установке сервера)
источник
Другая возможная проблема заключается в том, что сервер не поддерживает ваш алгоритм ключа. В моем случае я нашел следующие сообщения в своих
sshd
журналах (/var/log/auth.log
в моем случае):Если это так, вам нужно включить поддержку этого алгоритма в вашей
sshd
конфигурации (что может потребовать обновления до более позднейsshd
версии) или переключить ключ на алгоритм, поддерживаемый тем, к которомуsshd
вы пытаетесь подключиться ,источник
Поскольку эти вопросы появляются в числе первых результатов поиска при поиске такого поведения, я также добавлю свое решение:
В моем случае это не было связано с разрешениями. По любой причине (не удосуживаясь выяснить, по какой причине на самом деле, поскольку я нашел быстрое решение), при выполнении команды ssh программа не искала правильный файл идентификации. Одним из решений было добавить вручную на удаленном сервере ключ SSH, который пыталась использовать программа SSH. Вы можете наблюдать за тем, что делает программа SSH при выполнении команды, добавив -v к команде:
Затем вы просто получаете на своем локальном компьютере любой открытый ключ, для которого SSH-программа пытается найти файл идентификации / закрытый ключ, например, на Mac:
... и добавьте его в файл author_keys пульта дистанционного управления в:
Другим, в моем случае, лучшим решением было добавить собственный хост в мой локальный конфигурационный файл ssh. На моем Mac это:
Здесь вы можете добавить, например, что-то вроде этого:
Тогда вам просто нужно выполнить:
... и вуаля
источник