Этот вопрос может принадлежать сообществу Ask Different, но я задам его здесь, поскольку это скорее вопрос Unix.

Я использую MBP под управлением OSX 10.12.4. В моем терминальном окне, когда я ssh к localhost, он использует "ключ ECDSA". Я настроил ключ RSA ранее, поэтому я не знаю, почему он пытается использовать ключ ECDSA. Я даже не знаю, что такое ECDSA, и я сознательно не настроил ключ с помощью этого алгоритма. Если я пытаюсь подключиться к другому серверу, он использует мой RSA без проблем.

Это вывод, когда я пытаюсь ssh к localhost:

$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:1234567.
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.

Это вывод, когда я пытаюсь ssh на удаленный сервер:

ssh hostname.domainname.com
The authenticity of host 'hostname.domainname.com (10.10.10.10)' can't be established.
RSA key fingerprint is SHA256:abcdefg. 
   (yes, the fingerprint different from ECDSA key above)
Are you sure you want to continue connecting (yes/no)?

Я настроил локальный кластер hasoop с одним узлом, который работал раньше, но что-то случилось, когда я теперь не могу запустить кластер, потому что я не могу подключиться по ssh к localhost. Я удалил все записи в моем файле known_hosts, которые упоминали 127.0.0.1 или localhost, но у меня все еще проблемы. В моем файле .ssh/config я не упоминаю ECDSA.

Как заставить мой ноутбук перестать использовать ECDSA при подключении к localhost? Как я в конечном итоге использовал ECDSA? Любая помощь приветствуется.

РЕДАКТИРОВАТЬ # 2: Когда я запускаю ssh -v localhost , я вижу некоторые интересные сообщения. Надеюсь, кто-то может помочь мне расшифровать то, что это говорит, потому что это не имеет смысла для меня. Мой файл id_rsa присутствует, но он говорит, что это не так:

$ ssh -v localhost
OpenSSH_7.4p1, LibreSSL 2.5.0
debug1: Reading configuration data /Users/first.last/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 53: Applying options for *
debug1: Connecting to localhost [::1] port 22.
debug1: Connection established.
debug1: identity file /Users/first.last/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/first.last/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/first.last/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/first.last/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/first.last/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/first.last/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/first.last/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/first.last/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4
debug1: match: OpenSSH_7.4 pat OpenSSH* compat 0x04000000
debug1: Authenticating to localhost:22 as 'first.last'
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:Zg4yEz5WCZVbQEutpAM5zRw+Tk+2gUGFtSYOSTsVfTU
debug1: Host 'localhost' is known and matches the ECDSA host key.
debug1: Found key in /Users/first.last/.ssh/known_hosts:75
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,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/first.last/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
Authentication failed.
$ 

Содержимое моего .ssh dir выглядит следующим образом, поэтому я не знаю, что курит ОС, когда там написано, что id_rsa отсутствует, если только разрешения не меня не смутили:

authorized_keys*  id_rsa            config*
id_rsa.pub*       known_hosts*

1 ответ1

1

Я думаю, что вы путаете ключи хоста с ключами пользователя. Когда вы подключаетесь к хосту по SSH, хост аутентифицирует себя с помощью своего ключа хоста, а затем вы аутентифицируете себя на хосте с помощью своего пользовательского ключа.

Маки всегда сами генерировали свои ключи хоста. Последние версии macOS обновлены с ключей хоста RSA до ключей хоста ECDSA, поскольку криптография с эллиптической кривой считается более безопасной, чем RSA. Безопасность RSA основывается на том факте, что никто не нашел простой способ для вычисления продуктов с большими простыми числами. К сожалению, никто не доказал, что это неснижаемо сложно. Я считаю, что криптография с эллиптическими кривыми доказуемо сложна.

Пока вы удаляете ссылки на localhost и 127.0.0.1 из known_hosts, также удаляйте все записи для ::1 , что эквивалентно IPv6 127.0.0.1.

Вам не нужно переводить SSH-ключ вашего Mac с ECDSA на RSA, чтобы SSHing работал на localhost. Просто введите "да" один раз, когда SSHing в localhost и его ключ хоста ECDSA будут сохранены в вашем файле known_hosts.

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