ssh: В доступе отказано (publickey)

1178
SoftTimur

Один коллега работал на сервере, и написал ssh root@xxx.xxx.xxx.xxxи пароль в нашей документации.

Я только что сделал ssh-keygenна моей машине, и попытался сделать ssh -v root@xxx.xxx.xxx.xxxс моей машины, но я получил следующую ошибку.

Кто-нибудь знает как это исправить?

OpenSSH_7.6p1, LibreSSL 2.6.2 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 48: Applying options for * debug1: Connecting to xxx.xxx.xxx.xxx port 22. debug1: Connection established. debug1: identity file /Users/softtimur/.ssh/id_rsa type 0 debug1: key_load_public: No such file or directory debug1: identity file /Users/softtimur/.ssh/id_rsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/softtimur/.ssh/id_dsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/softtimur/.ssh/id_dsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/softtimur/.ssh/id_ecdsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/softtimur/.ssh/id_ecdsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/softtimur/.ssh/id_ed25519 type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/softtimur/.ssh/id_ed25519-cert type -1 debug1: Local version string SSH-2.0-OpenSSH_7.6 debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4p1 Ubuntu-10 debug1: match: OpenSSH_7.4p1 Ubuntu-10 pat OpenSSH* compat 0x04000000 debug1: Authenticating to xxx.xxx.xxx.xxx:22 as 'root' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: curve25519-sha256 debug1: kex: host key algorithm: ecdsa-sha2-nistp256 debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ecdsa-sha2-nistp256 SHA256:Pw4cFx5c2WGJzTwTL+gsx3AMHMEuT0sei1fz5oGCrac debug1: Host 'xxx.xxx.xxx.xxx' is known and matches the ECDSA host key. debug1: Found key in /Users/softtimur/.ssh/known_hosts:4 debug1: rekey after 134217728 blocks debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: rekey after 134217728 blocks debug1: SSH2_MSG_EXT_INFO received debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521> debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Offering public key: RSA SHA256:EL7hm5LvdVADZiv662nneDEeoLKy+etj8OT61eugu4Y /Users/softtimur/.ssh/id_rsa debug1: Authentications that can continue: publickey debug1: Trying private key: /Users/softtimur/.ssh/id_dsa debug1: Trying private key: /Users/softtimur/.ssh/id_ecdsa debug1: Trying private key: /Users/softtimur/.ssh/id_ed25519 debug1: No more authentication methods to try. root@xxx.xxx.xxx.xxx: Permission denied (publickey). 

Кто-нибудь знает, как это исправить?

Изменить 1:

В моем локальном Mac curl ipecho.net/plain ; echoвозвращается 175.169.13.102. Мне удалось открыть консоль из капельки Digital Ocean of A, затем я это сделал ssh-keygen, затем в консоли я сделал, ssh-copy-id softtimur@175.169.13.102что вернуло следующее; пароль не спрашивался.

Я до сих пор не могу поверить, что сервер может записывать файлы на мой локальный mac, как если бы мой локальный mac был сервером ...

enter image description here

0
Вы также запускали команду `ssh-copy-id`? nKn 6 лет назад 0
Нет, я не пробовал `ssh-copy-id`. На самом деле, я запутался, я не знаю, какой / чей ключ должен быть на сервере, а какой / чей ключ должен быть в моем локальном ... SoftTimur 6 лет назад 0
Закрытые ключи всегда должны оставаться на сервере, который генерирует ключ. Закрытые ключи никогда не должны передаваться. Если вы запустите `ssh-copy-id user @ host`, заменив хост сервером, к которому вы хотите подключиться, вы подключитесь к другому серверу и развернете открытый ключ, который будет использоваться для аутентификации. nKn 6 лет назад 0

1 ответ на вопрос

1
nKn

Примером способа использования метода аутентификации с открытым ключом является следующий. Предположим, у вас есть серверы A (сервер; тот, к которому вы хотите подключиться ) и B (клиент; тот, с которого вы хотите подключиться к A с помощью открытого ключа).

  1. На A выполните следующую команду:

    ssh-keygen

    • Это сгенерирует пару закрытый-открытый ключ, если запустить без аргументов, это будет сделано в ~/.ssh.
  2. На A запустите:

    ssh-copy-id [user@]<Bs-IP-address>

    • Это позволит скопировать публичный ключ, генерируемый к B . Это будет сделано в файле с именем .~/.ssh/authorized_keys

    • Если это не работает из-за проблем с подключением или вы просто не можете подключиться из точки A в B, есть альтернативный (ручной) способ сделать это. На вашем компьютере A перейдите в ~/.sshкаталог и найдите файл с открытым ключом. Вероятно, это будет файл с .pubрасширением. Откройте его и скопируйте содержимое, и в B добавьте / вставьте его в свой ~/.ssh/authorized_keysфайл. Очень важно : этот файл должен принадлежать пользователю, группа должна быть пользователем и иметь права доступа 600. Иначе это не сработает . Это в значительной степени то, что ssh-copy-idделает.

  3. Из B, попробуйте подключиться по SSH к .

Несколько вещей, на которые стоит обратить внимание:

  • Команда в пункте 2 развернет открытый ключ только для удаленного пользователя, к которому вы подключаетесь. Это означает, что если вы развернете ключ в доме tomпользователя, имя пользователя которогоjerry не сможет его использовать. Короче говоря, развертывание для каждого пользователя.
  • Если вы пытаетесь развернуть ключ для подключения к с, убедитесь, что директива в имеет либо значение или (предпочтительно). Если установленоrootPermitRootLogin/etc/ssh/sshd_configyesprohibit-passwordno, публичный метод аутентификации не будет работать.
  • Никогда не передавайте закрытый ключ никому.
Спасибо за это ... Я просто хочу уточнить, что я хочу подключиться к серверу (** A ** в вашем ответе?) С моей локальной машины (** B ** в вашем ответе?), Тогда как можно Я понимаю`? SoftTimur 6 лет назад 0
Да, в моем случае ** A ** - сервер, а ** B ** - клиент. Обычно при запуске `ifconfig` на ** B ** вы можете видеть его IP-адрес. nKn 6 лет назад 0
1) Находится ли `~ / .ssh / authorized_keys` в ** A ** или ** B **? 2) На шаге 2 я все еще не могу поверить, что что-то может быть записано на мой локальный компьютер. Что делать, если мой компьютер выключен, когда люди делают `ssh-copy-id` в ** A **? SoftTimur 6 лет назад 0
1) Файл авторизованных ключей должен быть на ** B **. Эти ключи (вы можете иметь столько, сколько захотите) - это те, которые будут использоваться для аутентификации с использованием SSH через аутентификацию с открытым-закрытым ключом. 2) `ssh-copy-id` будет использовать протокол SSH для развертывания ключа. Вот почему IP-адрес B необходим. Вам также будет предложено ввести пароль, что является нормальным, потому что ** A ** не авторизован для подключения к ** B ** с использованием способа аутентификации private-public. Так что да, ваша машина должна быть подключена к сети при развертывании ключа. nKn 6 лет назад 0
Пожалуйста, смотрите обновление моего OP ... SoftTimur 6 лет назад 0
Кажется, это проблема подключения. Вы перенаправляете порт `22 / TCP` на локальный компьютер в брандмауэре? Порт локального компьютера `22 / TCP` открыт для этого соединения? nKn 6 лет назад 0
Пожалуйста, смотрите мои изменения, конкретно пункт 2, я добавил ручной способ развертывания открытого ключа. nKn 6 лет назад 0
Еще раз спасибо ... Мне наконец удалось скопировать открытый ключ ** A ** в мой локальный `.ssh / authorized_keys`. Разрешение файла равно 600, пользователь - softtimur, а группа - staff, но `ssh root @ xxx.xxx.xxx.xxx` снова вернул` Permission denied (publickey) `. Должен ли я изменить группу файла (на какую)? SoftTimur 6 лет назад 0
Пожалуйста, смотрите "Ваш открытый ключ должен быть в файле author_keys на вашей Droplet ..." из [этой темы] (https://www.digitalocean.com/community/questions/error-permission-denied-publickey-when- i-try-to-ssh), ваш ответ и его ответ совершенно противоположны ... SoftTimur 6 лет назад 0
Мы говорим точно так же. В этом случае я предполагаю, что он пытается аутентифицироваться со своей Droplet на свой локальный компьютер, а вы пытаетесь сделать наоборот. Открытый ключ должен находиться в `author_keys` машины, которая хочет подключиться к серверу, что в значительной степени соответствует его словам. Вы проверяли, есть ли на стороне сервера `PermitRootLogin` для` prohibit-password` или `yes`? nKn 6 лет назад 0

Похожие вопросы