Невозможно использовать SSH-ключи, если не запустить SSH с помощью Sudo.

Вопрос или проблема

По какой-то причине я не могу подключиться через SSH с моей машины Ubuntu 15.10 к удаленному серверу, используя приватный ключ, если я запускаю ssh без sudo.

Конфигурация на стороне сервера в порядке. Я тестировал приватный ключ с моей машины под Windows и с CentOS и обе могут его использовать.

Если я помещаю приватный ключ в ~/.ssh, аутентификация не проходит, и меня просят ввести пароль. Однако, если я помещаю тот же приватный ключ в /root/.ssh и использую sudo ssh, я могу подключиться как обычно.

Работает: sudo ssh [email protected] -vvv

Не работает: ssh [email protected] -vvv

Я заметил это в подробном выводе SSH.

Без Sudo: Предлагается открытый ключ RSA: /home/matt/.ssh/id_rsa

С Sudo: Пробуется приватный ключ: /root/.ssh/id_rsa

До этой строки вывод тот же.

Использование директории root .ssh – это не конец света, но это не кажется правильным.

Кто-нибудь знает, почему это не работает с ssh-ключом в домашней директории моего пользователя?

Вывод при выполнении `ssh -vv user@host:

OpenSSH_6.9p1 Ubuntu-2ubuntu0.1, OpenSSL 1.0.2d 9 Jul 2015
debug1: Чтение данных конфигурации /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 19: Применение параметров для *
debug2: ssh_connect: needpriv 0
debug1: Подключение к gitlab.git.ho.me [192.168.1.155] порт 22.
debug1: Соединение установлено.
debug1: файл идентификации /home/matt/.ssh/id_rsa тип 1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/matt/.ssh/id_rsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/matt/.ssh/id_dsa тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/matt/.ssh/id_dsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/matt/.ssh/id_ecdsa тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/matt/.ssh/id_ecdsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/matt/.ssh/id_ed25519 тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/matt/.ssh/id_ed25519-cert тип -1
debug1: Включение режима совместимости для протокола 2.0
debug1: Локальная строка версии SSH-2.0-OpenSSH_6.9p1 Ubuntu-2ubuntu0.1
debug1: Удалённая версия протокола 2.0, удалённое программное обеспечение OpenSSH_6.0p1 Debian-4+deb7u3
debug1: match: OpenSSH_6.0p1 Debian-4+deb7u3 pat OpenSSH* compat 0x04000000
debug2: fd 3 устанавливание O_NONBLOCK
debug1: Аутентификация для gitlab.git.ho.me:22 как 'git'
debug1: SSH2_MSG_KEXINIT отправлено
debug1: SSH2_MSG_KEXINIT получено
debug2: kex_parse_kexinit: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: [email protected],[email protected],ssh-rsa,[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,ssh-dss
debug2: kex_parse_kexinit: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1,[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1,[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ssh-rsa SHA256:2jkKypIK9zvIYnJARNTDz2GVNqSRmz+ERWV/nTLCLWE
debug1: Host 'gitlab.git.ho.me' is known and matches the RSA host key.
debug1: Найден ключ в /home/matt/.ssh/known_hosts:1
debug2: set_newkeys: режим 1
debug1: SSH2_MSG_NEWKEYS отправлено
debug1: ожидание SSH2_MSG_NEWKEYS
debug2: set_newkeys: режим 0
debug1: SSH2_MSG_NEWKEYS получено
debug1: SSH2_MSG_SERVICE_REQUEST отправлено
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT получено
debug2: ключ: /home/matt/.ssh/id_rsa (0x560bd5470390),
debug2: ключ: /home/matt/.ssh/id_dsa ((nil)),
debug2: ключ: /home/matt/.ssh/id_ecdsa ((nil)),
debug2: ключ: /home/matt/.ssh/id_ed25519 ((nil)),
debug1: Аутентификации, которые могут продолжаться: publickey,password
debug1: Следующий метод аутентификации: publickey
debug1: Предлагается открытый ключ RSA: /home/matt/.ssh/id_rsa
debug2: мы отправили пакет publickey, ждем ответа
debug1: Сервер принимает ключ: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp SHA256:r+PZ/Ve2JY8SMHkm+opqRZzd/8HdfVL+zdc9hnaTSTQ
debug1: Пробуется приватный ключ: /home/matt/.ssh/id_dsa
debug1: Пробуется приватный ключ: /home/matt/.ssh/id_ecdsa
debug1: Пробуется приватный ключ: /home/matt/.ssh/id_ed25519
debug2: мы не отправили пакет, отключаем метод
debug1: Следующий метод аутентификации: password

Вывод при выполнении sudo ssh -vv user@host

OpenSSH_6.9p1 Ubuntu-2ubuntu0.1, OpenSSL 1.0.2d 9 Jul 2015
debug1: Чтение данных конфигурации /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 19: Применение параметров для *
debug2: ssh_connect: needpriv 0
debug1: Подключение к gitlab.git.ho.me [192.168.1.155] порт 22.
debug1: Соединение установлено.
debug1: permanently_set_uid: 0/0
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /root/.ssh/id_rsa тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /root/.ssh/id_rsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /root/.ssh/id_dsa тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /root/.ssh/id_dsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /root/.ssh/id_ecdsa тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /root/.ssh/id_ecdsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /root/.ssh/id_ed25519 тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /root/.ssh/id_ed25519-cert тип -1
debug1: Включение режима совместимости для протокола 2.0
debug1: Локальная строка версии SSH-2.0-OpenSSH_6.9p1 Ubuntu-2ubuntu0.1
debug1: Удалённая версия протокола 2.0, удалённое программное обеспечение OpenSSH_6.0p1 Debian-4+deb7u3
debug1: match: OpenSSH_6.0p1 Debian-4+deb7u3 pat OpenSSH* compat 0x04000000
debug2: fd 3 устанавливание O_NONBLOCK
debug1: Аутентификация для gitlab.git.ho.me:22 как 'git'
debug1: SSH2_MSG_KEXINIT отправлено
debug1: SSH2_MSG_KEXINIT получено
debug2: kex_parse_kexinit: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],[email protected],[email protected],[email protected],ssh-ed25519,ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1,[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: Kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1,[email protected],[email protected],[email protected],sudo: Пробуйте нагрузка из /etc/ssh/sshd_config на ийБуэллуЗиеллуЗrelloGodacles gmail.com вытравкуSupeqom">[email‎protected],
debug2: ожидание SSH2_MSG_ACCEPT,
debug3: key, debug1 key2man, консоли в плоской клавиатуре,
debug4: из интерфейса клейковозсосов 128-bit,
debug5: неравнение:
@mailingnet

Вывод sudo ls -ald /root/.ssh /root/.ssh/* /home/matt/.ssh /home/matt/.ssh/*

drwx------ 2 matt matt 4096 Apr 12 19:25 /home/matt/.ssh
-rwx------ 1 matt matt   59 Apr 12 17:28 /home/matt/.ssh/-config
-rw-rw-r-- 1 matt matt   63 Apr 12 17:27 /home/matt/.ssh/config~
-rw------- 1 matt matt 1675 Apr 12 17:46 /home/matt/.ssh/id_rsa
-rw-r--r-- 1 matt matt  393 Apr 12 17:46 /home/matt/.ssh/id_rsa.pub
-rw-rw-r-- 1 matt matt 1770 Apr 12 17:49 /home/matt/.ssh/known_hosts
-rw-rw-r-- 1 matt matt   25 Apr 12 19:25 /home/matt/.ssh/output.txt
drwx------ 2 root root 4096 Apr 12 18:21 /root/.ssh
-rw------- 1 root root 1675 Apr 12 18:21 id_rsa
-rw-r--r-- 1 root root  444 Apr 12 17:24 known_hosts

Если вы вызываете ssh из оболочки sudo, вы будете вошли как root на целевом хосте. Если вы вызываете ssh из оболочки вашего пользователя, вы войдете как matt. Думаю, вы поместили ключ в файл authorized_keys для root на целевом хосте, поэтому вам нужно указать ssh, что вы хотите войти как root на целевой машине, а не как matt:

ssh [email protected]

Разница между использованием пользователя и sudo заключается в следующем:

matt:
debug1: Ключ хоста сервера: ssh-rsa SHA256:2jkKypIK9zvIYnJARNTDz2GVNqSRmz+ERWV/nTLCLWE
debug1: Хост 'gitlab.git.ho.me' известен и соответствует RSA хост-ключу.
debug1: Найден ключ в /home/matt/.ssh/known_hosts:1

-

sudo:
debug1: Ключ хоста сервера: ecdsa-sha2-nistp256 SHA256:YUYeh6YJ4Nkz5B/17cjcE57I8Ao6IHHuDYgK60dzMHI
debug1: Host 'gitlab.git.ho.me' is known and matches the ECDSA host key.
debug1: Найден ключ в /root/.ssh/known_hosts:1

Как matt ssh находит известный ключ хоста rsa и ssh не удается. Как root ssh находит известный ключ dsa и успешно проходит.

Может быть, вы исправите это, удалив файл /home/matt/.ssh/known_hosts

Вы можете принудительно использовать dsa с помощью этой команды:

ssh -o HostKeyAlgorithms=ssh-dss [email protected]

Вы можете удалить старые записи из файла known_hosts с помощью:

ssh-keygen -R gitlab.git.ho.me
ssh-keygen -R 192.168.1.155

Как оказалось, разкомментирование строки IdentityFile в /etc/ssh/ssh_config решило проблему. Эта строка была закомментирована по умолчанию в установке Ubuntu 15.10

Ответ или решение

Невозможность использования SSH-ключей без sudo на Ubuntu 15.10

Ваша проблема заключается в невозможности использовать SSH-ключ для подключения к удаленному серверу с вашего компьютера под управлением Ubuntu 15.10, если команда SSH выполняется без использования sudo. Попробуем разобраться в возможных причинах и предложить решения.

Рассмотрение проблемы

  1. Подключение к серверу:

    • Вы можете подключаться к удаленному серверу, когда ключи находятся в /root/.ssh, и команда выполняется с sudo.
    • Подключение не срабатывает при использовании ключей из /home/matt/.ssh.
  2. Журналы диагностики:

    • Версия OpenSSH: 6.9p1
    • В выводе команды ssh -vv без sudo видно, что идентифицируется файл /home/matt/.ssh/id_rsa, но после его предложения на сервере, аутентификация по RSA не проходит и запрашивается пароль.
    • При sudo ssh -vv используется /root/.ssh/id_rsa, и аутентификация успешна.

Возможные причины и решения

  1. Проблемы с конфигурацией SSH:

    • Убедитесь, что ключ присутствует в файле ~/.ssh/authorized_keys на целевом сервере для пользователя matt. Это необходимо для успешной аутентификации.
  2. Проблемы с правами доступа к файлам:

    • Проверьте права доступа к директории и файлам SSH в /home/matt/.ssh. Права должны быть установлены следующим образом:
      • Директория ~/.ssh: drwx------ (700)
      • Файл id_rsa: -rw------- (600)
    • Из вашего списка видно, что права установлены корректно, однако стоит убедиться, что они не изменялись.
  3. Конфигурация системных файлов:

    • Проверьте настройки /etc/ssh/ssh_config. Если параметр IdentityFile был закомментирован, его необходимо раскомментировать и указать путь к вашему ключу. Например:
      IdentityFile ~/.ssh/id_rsa
  4. Проблемы с known_hosts:

    • Возможно, проблема связана с конфликтом ключей host key. Попробуйте удалить записи из known_hosts, используя команды:
      ssh-keygen -R gitlab.git.ho.me
      ssh-keygen -R 192.168.1.155

Заключение

Следуя вышеуказанным шагам, вы устраните проблему с использованием SSH-ключей без sudo. Тщательно проверьте каждый из аспектов, чтобы убедиться в корректной настройке ключей и конфигурации. Понимание и управление этим процессом обеспечит успешное и безопасное подключение к удалённым серверам.

Оцените материал
Добавить комментарий

Капча загружается...