Один коллега работал на сервере и написал 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 был сервером ...

1 ответ1

1

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

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

    ssh-keygen

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

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

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

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

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

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

  • Команда в пункте 2 развернет открытый ключ только для удаленного пользователя, к которому вы подключаетесь. Это означает, что если вы развернете ключ в доме tom , пользователь, чье имя пользователя является jerry , не сможет его использовать. Короче говоря, развертывание для каждого пользователя.
  • Если вы пытаетесь развернуть ключ для подключения к A с помощью root , убедитесь, что директива PermitRootLogin в /etc/ssh/sshd_config имеет значение yes или prohibit-password (желательно). Если установлено значение no , проверка подлинности с помощью общедоступного метода не будет работать.
  • Никогда не передавайте закрытый ключ никому.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .