SSH раптом запитує пароль


5

Примітка: це дублікат цього питання StackOverflow , оскільки Ali786 припустив, що тут буде краще.

Загальна проблема

У мене є комп’ютер (Mac OSX 10.9.4) та віддалений сервер (Ubuntu 14.04.1 LTS), на який я заходжу як root. Я ssh-keygenстворив ключ ssh (без парольної фрази), додав відкритий ключ до сервера .ssh/authorized_keys, і все було добре у світі. Потім, раніше сьогодні, знову sshпочав просити мене пароля.

Що це могло спричинити

Я дійсно не впевнений, що це спричинило - ось мої найкращі здогадки:

  • Мені довелося видалити деякі файли з мого домашнього каталогу на віддаленому сервері, коли я випадково скопіював туди сховище git (я з цього не зробив чи нічого, просто скопіював речі та переписав rmїх). З того, що я можу сказати з історії моїх команд, не видалено файли, що стосуються ssh, лише файли .git, .gitignore та різні * .sw? залишки файлів від vim.
  • Я побіг ssh-keygen -l -f ~/.ssh/authorized_keysна віддалений сервер, щоб побачити відбитки пальців (я думаю) ключів у цьому файлі.

Відповідні журнали

Коли я бігаю ssh -v -i ~/.ssh/mykey_rsa root@serverip, я отримую таке:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/myusername/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 50: Applying options for *
debug1: Connecting to {ip address} [{ip address}] port 22.
debug1: Connection established.
debug1: identity file .ssh/mykey_rsa type 1
debug1: identity file .ssh/mykey_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version
OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2 pat OpenSSH*
debug1:  Miscellaneous failure (see text)
No credentials cache file found

debug1:  An invalid name was supplied
unknown mech-code 0 for mech 1 2 752 43 14 2

debug1:  Miscellaneous failure (see text)
unknown mech-code 0 for mech 1 3 6 1 5 5 14

debug1:  Miscellaneous failure (see text)
unknown mech-code 2 for mech 1 3 6 1 4 1 311 2 2 10

debug1:  An unsupported mechanism was requested
unknown mech-code 0 for mech 1 3 5 1 5 2 7

debug1:  Miscellaneous failure (see text)
unknown mech-code 0 for mech 1 3 6 1 5 2 5

debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA {fingerprint}
debug1: Host '{ip address}' is known and matches the RSA host key.
debug1: Found key in /Users/myusername/.ssh/known_hosts:16
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: .ssh/otherkey_rsa
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: .ssh/mykey_rsa
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
root@serverip's password: 

Мені здається дивним, що він спробував інший ключ ssh (otherkey_rsa) перед тим, яким я сказав йому використовувати (mykey_rsa), але я не знаю достатньо про ssh, щоб добре це проаналізувати.

Тим часом віддалений сервер /var/log/auth.logкорисно говорить

Aug 12 02:04:19 servername sshd[22147]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Aug 12 02:04:19 servername sshd[22147]: Authentication refused: bad ownership or modes for directory /root

Дозволи

Місцево / на моєму комп’ютері:

~/                     drwxr-xr-x+ 105 myusername staff 3570 Aug 11 23:14
~/.ssh/                drwx------   13 myusername staff  442 Aug 11 23:14
~/.ssh/mykey_rsa.pub   -rw-r--r--    1 myusername staff  397 Aug  5 20:52
~/.ssh/mykey_rsa       -rw-------    1 myusername staff 1675 Aug  5 20:52

Віддалено / на сервері:

~/                     drwxr-xr-x    8        501 staff 4096 Aug 12 02:16
~/.ssh/                drwx------    2       root root  4096 Aug 12 01:49
~/.ssh/authorized_keys -rw-------    1       root root   794 Aug 12 01:44

Віддалено в /etc/ssh/каталозі:

/etc/ssh $ ls -la
drwxr-xr-x  2 root root   4096 Aug 12 11:01 .
drwxr-xr-x 96 root root   4096 Aug 12 01:40 ..
-rw-r--r--  1 root root 242091 Apr 14 08:13 moduli
-rw-r--r--  1 root root   1690 Apr 14 08:13 ssh_config
-rw-r--r--  1 root root   2528 Apr 17 15:43 sshd_config
-rw-------  1 root root    672 Aug  6 00:41 ssh_host_dsa_key
-rw-r--r--  1 root root    606 Aug  6 00:41 ssh_host_dsa_key.pub
-rw-------  1 root root    227 Aug  6 00:41 ssh_host_ecdsa_key
-rw-r--r--  1 root root    178 Aug  6 00:41 ssh_host_ecdsa_key.pub
-rw-------  1 root root   1679 Aug  6 00:41 ssh_host_rsa_key
-rw-r--r--  1 root root    398 Aug  6 00:41 ssh_host_rsa_key.pub
-rw-r--r--  1 root root    338 Apr 17 11:48 ssh_import_id

Отже, схоже, що причиною того, що він не міг завантажити, /etc/ssh/ssh_host_ed25519_keyє те, що його не існує. Чи слід? Якщо так, то як я можу це створити?

Я дуже наткнувся на це і дуже вдячний за допомогу! Дякую!


Чи читаю я його неправильно, або у вашій / root папці є дозволи rx для всіх? І якщо це не root, якщо він "віддалений користувач", він все ще має занадто багато дозволів, чи не так?
Марсело

На яких дозволах /etc/ssh/ssh_host_ed25519_key?
ernie

Я оновив публікацію, щоб показати дозволи на /etc/ssh/неї - схоже, у мене немає ssh_host_ed25519_key, хоча я не впевнений, що робити, щоб отримати.
Таша

Відповіді:


2

auth.logточно розповідає, у чому полягає проблема: /rootналежить користувачеві, який не є віддаленим користувачем або root, але це якось важливо для вашого входу. Або віддалений користувач є root, або його .ssh файли посилаються на десь під /root.

Також я помічаю ваш ls-рядок, який показує, що ~/належить користувачеві 501. Це призведе до тієї ж помилки.

Я здогадуюсь про те, що змінилося, це те, що ви sshd_configзараз вказуєте StrictModes.


Так, sshd_configвказується StrictModes, але я думаю, саме так воно і було спочатку. Я щойно зрозумів - причиною того, що моя домашня директорія була власником користувача 501, було те, що я там rsyncредагував купу файлів ( rsyncза замовчуванням користувач 501). chown root .у моєму домашньому каталозі виправлена ​​проблема. Дякую, що вказали на те, що дивилося мені в обличчя!
Таша
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.