Вопрос или проблема
По какой-то причине я не могу подключиться через 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">[emailprotected],
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
. Попробуем разобраться в возможных причинах и предложить решения.
Рассмотрение проблемы
-
Подключение к серверу:
- Вы можете подключаться к удаленному серверу, когда ключи находятся в
/root/.ssh
, и команда выполняется сsudo
. - Подключение не срабатывает при использовании ключей из
/home/matt/.ssh
.
- Вы можете подключаться к удаленному серверу, когда ключи находятся в
-
Журналы диагностики:
- Версия OpenSSH: 6.9p1
- В выводе команды
ssh -vv
безsudo
видно, что идентифицируется файл/home/matt/.ssh/id_rsa
, но после его предложения на сервере, аутентификация по RSA не проходит и запрашивается пароль. - При
sudo ssh -vv
используется/root/.ssh/id_rsa
, и аутентификация успешна.
Возможные причины и решения
-
Проблемы с конфигурацией SSH:
- Убедитесь, что ключ присутствует в файле
~/.ssh/authorized_keys
на целевом сервере для пользователяmatt
. Это необходимо для успешной аутентификации.
- Убедитесь, что ключ присутствует в файле
-
Проблемы с правами доступа к файлам:
- Проверьте права доступа к директории и файлам SSH в
/home/matt/.ssh
. Права должны быть установлены следующим образом:- Директория
~/.ssh
:drwx------
(700) - Файл
id_rsa
:-rw-------
(600)
- Директория
- Из вашего списка видно, что права установлены корректно, однако стоит убедиться, что они не изменялись.
- Проверьте права доступа к директории и файлам SSH в
-
Конфигурация системных файлов:
- Проверьте настройки
/etc/ssh/ssh_config
. Если параметрIdentityFile
был закомментирован, его необходимо раскомментировать и указать путь к вашему ключу. Например:IdentityFile ~/.ssh/id_rsa
- Проверьте настройки
-
Проблемы с
known_hosts
:- Возможно, проблема связана с конфликтом ключей host key. Попробуйте удалить записи из
known_hosts
, используя команды:ssh-keygen -R gitlab.git.ho.me ssh-keygen -R 192.168.1.155
- Возможно, проблема связана с конфликтом ключей host key. Попробуйте удалить записи из
Заключение
Следуя вышеуказанным шагам, вы устраните проблему с использованием SSH-ключей без sudo
. Тщательно проверьте каждый из аспектов, чтобы убедиться в корректной настройке ключей и конфигурации. Понимание и управление этим процессом обеспечит успешное и безопасное подключение к удалённым серверам.