Не удалось подключиться по ssh с помощью Git bash в Windows — разрешение отклонено (общедоступный ключ)

Я не могу подключиться по ssh к серверу в digitalocean. Я добавил открытый ключ на сервер, к которому хочу подключиться. Я использую Git для Windows. Используя Windows 7. Я отключил StrictHostKeyChecking в файле ssh_config в GIT. SSH-агент работает. Также добавил ключ к агенту с помощью команды ssh-add, и он правильно показывает мой закрытый ключ. Имя моего закрытого ключа ct_devops, а не id_rsa, в этом проблема? Ниже вы найдете вывод команды ssh -vT "hostname":

OpenSSH_7.7p1, OpenSSL 1.0.2p  14 Aug 2018
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to qa-baseversion.cxmweb.com [178.128.78.198] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_ed25519-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_xmss type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.7
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.7p1 Debian-5+deb8u4
debug1: match: OpenSSH_6.7p1 Debian-5+deb8u4 pat OpenSSH* compat 0x04000000
debug1: Authenticating to qa-baseversion.cxmweb.com:22 as 'JustinXa'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:OZBnpQ0IJBFGJH0tqPuNb9GnkjDPEZ1O2lvMs07imMo
debug1: Host 'qa-baseversion.cxmweb.com' is known and matches the ECDSA host key.
debug1: Found key in /c/Users/justinxa/.ssh/known_hosts:6
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_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:pVj+83I7wVJ7LF2mB5IVNDXbfXdyGYh7Cvh/9HRePGY JustinXa@CSSLLAPTOP-148
debug1: Authentications that can continue: publickey
debug1: Trying private key: /c/Users/justinxa/.ssh/id_rsa
debug1: Trying private key: /c/Users/justinxa/.ssh/id_dsa
debug1: Trying private key: /c/Users/justinxa/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/justinxa/.ssh/id_ed25519
debug1: Trying private key: /c/Users/justinxa/.ssh/id_xmss
debug1: No more authentication methods to try.
[email protected] Permission denied (publickey).

Может кто-нибудь, пожалуйста, помогите определить, что нужно сделать или что я делаю неправильно? Я проверил другие ответы и перепробовал все возможности, но все равно не работает.


person justin xa    schedule 16.10.2018    source источник
comment
Я пришел сюда с похожим вопросом, однако, думаю, вам поможет флаг -i. Вы можете определить, какой ключ ssh должен использовать с этим, например: ssh -vT -i c:\Users\me\.ssh\ct_devops [email protected]   -  person David Woods    schedule 26.08.2019


Ответы (1)


Я тестировал это только на Linux и OS X, но ответ нелогичен (сначала объясню решение, а затем почему оно работает):

  1. Используйте -i. Я не знаю точного варианта синтаксиса для Windows, но в системе * nix я бы сделал так:

    ssh -i /path/to/publickey root@dropletip

  2. Скопируйте ключи root ssh пользователю, под которым вы хотите войти:

    cp ~/.ssh/. /home/мой пользователь/.ssh получить

  3. Перезапустите демон ssh (это зависит от вашего дистрибутива Linux на удаленном сервере)

Теоретически это работает, потому что учетная запись root была настроена с правильными учетными данными ключа ssh (при условии, что вы настроили их правильно, когда создавали дроплет). В вашей новой учетной записи пользователя нет.

Теперь ваш вопрос не совсем ясен о том, под каким пользователем вы пытались использовать ssh. Должен быть один, и сначала вам нужно делать что-то от имени пользователя root, а не просто создавать пользователя без полномочий root. Есть еще несколько потенциальных проблем:

  1. Возможно, у вас слишком открытые разрешения на ваши локальные ключи. Некоторые идеи по решению этой проблемы в Windows можно найти на этой странице StackOverflow, хотя я лично не пытался подключиться по SSH к дроплету из Windows с аутентификацией по ключу ssh.
  2. Это зависит от того, но я заметил, что поле комментария для SSH-keygen имеет тенденцию заполнять конец открытого ключа вашим именем пользователя и именем локального хоста. Я иногда замечал, что если вы создаете открытый ключ и убедитесь, что у вас есть один, в котором для комментария установлено значение root@yourDroplet, а другой — yourNewUser@yourDroplet, это может пройти более гладко; официальные документы говорят, что поле комментария игнорируется.
person Ellie Lockhart    schedule 22.11.2020