ssh ніколи не запитувати пароль


14

Якось мій SSH ніколи не хоче просити мене пароля.

Тому я встановлюю VPS на якомусь випадковому сервері десь у світі і хочу підключитися до нього за допомогою ssh.

Я можу встановити ключ, але коли це роблю:

ssh -l some-user IP

Я отримую помилку:

Received disconnect from ##.##.##.##: 2: Too many authentication failures for some-user

Переглядаючи деталі, я бачу, що пароль є одним із варіантів:

debug1: Offering RSA public key: some-user@computer
debug1: Authentications that can continue: publickey,password

І все-таки SSH ніколи не просить мене пароля. Він намагається 5 разів із тим, що я підозрюю, що це метод publickey, а потім не вдається. Чому б не спробувати спробувати пароль ?!

На всякий випадок мій файл ssh_config містить:

PasswordAuthentication yes

Повний журнал

ssh -v -l root ##.##.##.##
OpenSSH_6.1p1 Debian-4, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /home/someuser/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to ##.##.##.## [##.##.##.##] port 22.
debug1: Connection established.
debug1: identity file /home/someuser/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /home/someuser/.ssh/id_rsa-cert type -1
debug1: identity file /home/someuser/.ssh/id_dsa type -1
debug1: identity file /home/someuser/.ssh/id_dsa-cert type -1
debug1: identity file /home/someuser/.ssh/id_ecdsa type -1
debug1: identity file /home/someuser/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.2p2 Ubuntu-6
debug1: match: OpenSSH_6.2p2 Ubuntu-6 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.1p1 Debian-4
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA XX:XX:...:XX:XX
debug1: Host '##.##.##.##' is known and matches the ECDSA host key.
debug1: Found key in /home/someuser/.ssh/known_hosts:38
debug1: ssh_ecdsa_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: /home/someuser/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: someuser@computer
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: someuser@computer
debug1: Authentications that can continue: publickey,password
debug1: Offering DSA public key: someuser@computer
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: someuser@computer
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: someuser@computer
Received disconnect from ##.##.##.##: 2: Too many authentication failures for root

Відповіді:


17

Спробуйте увійти, вимкнувши автентифікацію відкритого ключа, використовуючи

ssh -o PubkeyAuthentication=no root@newserver

Добре! Це спрацювало! Я пробував "протилежне" без успіху ... (тобто -o PasswordAuthentication=yes). Але це те, що я шукав.
Alexis Wilke

3
@AlexisWilke Я радий, що це працює! Але прочитайте також відповідь Оллі. Він, безумовно, правий у тому, що все ще щось не так з вашим .ssh/config. Це -o PubkeyAuthentication=noне приємно як постійне рішення.
Klaus-Dieter Warzecha

Цей трюк (-o PubkeyAuthentication = ні) добре працював на машині з кількома файлами посвідчень.
Валеріо Скіавоні

17

Швидше за все, identityfileу вашому .ssh/configфайлі є кілька рядків .

Навіть якщо у вас є identityfileпід hostконфігурацією, вона застосовується у всьому світі. Це означає, що sshвипробовуєте кожен ідентифікаційний файл (тобто відкритий ключ) на кожному хості, перш ніж він запитує про запрошення пароля від сервера.

Ви можете це виправити

  1. Видалення всіх, крім однієї identityfileлінії, або
  2. Додавання PubkeyAuthentication noдо .ssh/config, або
  3. Виконання ssh з -o PubkeyAuthentication=noпараметром.

Від man 5 ssh_config:

PubkeyAuthentication
    Specifies whether to try public key authentication.  The argument to this
    keyword must be “yes” or “no”.  The default is “yes”.  This option applies 
    to protocol version 2 only.

IdentityFile
    ...
    It is possible to have multiple identity files specified in configuration
    files; all these identities will be tried in sequence.  Multiple 
    IdentityFile directives will add to the list of identities tried (this 
    behaviour differs from that of other configuration directives).

Деякі загальні інструкції з відкритими ключами:

  1. Загалом, у вас повинен бути лише один приватний ключ на кожного клієнта (робоча станція), і розмістити відповідний відкритий ключ на всіх серверах, до яких клієнт повинен мати доступ. Іншими словами, діліться відкритим ключем між серверами і ніколи не використовуйте один і той же приватний ключ на кількох пристроях.
  2. Завжди генеруйте ключ на вашому пристрої та передайте лише відкритий ключ. Таким чином, навіть якщо сервер зламаний, ваш приватний ключ все ще є безпечним. Це може статися дивним чином - наприклад, за допомогою резервного копіювання.
  3. Якщо хтось інший управляє сервером, ви повинні надати відкритий ключ для них; вони не повинні генерувати ключ, а також надсилати вам приватний ключ. Таким чином, вони не можуть уособлювати вас своїм ключем (звичайно, зазвичай вони можуть робити все, що хочуть). Крім того, за допомогою відкритого ключа повинна бути захищена лише цілісність (тобто хтось не змінив відкритий ключ); з приватним ключем конфіденційність (тобто ніхто більше не отримав ключ) повинен зберігатися, і не можна бути абсолютно впевненим, що він не був порушений.
  4. Компрометація сервера не загрожує іншим серверам, навіть якщо ви використовуєте один і той же приватний ключ для підключення до декількох серверів (за винятком випадків, коли ви передали цей приватний ключ на сервер. Ніколи цього не робіть.)
  5. Компрометуючи свою робочу станцію, все одно викриєте ваші приватні ключі. Наявність декількох приватних ключів у цьому не допомагає (за винятком випадків, коли у вас різні, сильні парольні фрази, і не всі з них доступні для зловмисника).

Є деякі винятки з цього, але не дуже багато.


2
Ааа! У мене є "занадто багато" ідентифікаційних файлів, і вона перевіряється з 5 з них і зупиняється. Зрозумів! Це все пояснює. Я припускаю, що я повинен перемістити всіх у підпапку, щоб вони не були знайдені автоматично, а функція пароля знову працювала б автоматично ...
Alexis Wilke

3
Якщо можливо, ви повинні / могли використовувати лише один відкритий ключ для кожної необхідної послуги. Дуже рідко є причина зробити це будь-яким іншим способом. Якщо хтось викраде ваш відкритий ключ (вміст authorized_keys), він нічого не може з цим зробити. І якщо всі ваші приватні ключі ( id_rsa/ id_dsa) все одно є на одному комп’ютері, використання декількох не має значення.
Оллі

4

Ваш локальний ssh ​​не повинен просити вас пароля, ssh-сервер повинен з іншого боку. Цілком ймовірно, що сервер налаштований не приймати автентифікацію пароля. Мій також не запитав у вас пароль.


1
Інший сервер - це абсолютно новий сервер, і вони говорять вам зробити саме це. Мало того, мій партнер міг увійти без проблем! Щось рибне на моєму комп’ютері, що заважає йому перевірити пароль ... Насправді, якщо ви подивитеся на журнали, авторизована автентифікація НЕ включає "пароль". Тому мій локальний клієнт ssh ДОЛЖЕН би запитати мене, але він вирішує пропустити його.
Алексіс Вілке

Простіше зрозуміти, чому сервер не запропонує вам ввести пароль, ніж зрозуміти, чому ваш клієнт не запропонує вам цю опцію, якщо сервер її пропонує. Є багато варіантів конфігурації на їх кінці, і мало хто з ваших. Можливо, хтось із вашою IP-адресою намагався ввійти занадто багато разів без правильного пароля, а майбутні спроби вашого IP-адреси були відключені. Стріляйте, я просто прочитав відповідь Оллі. Це воно.
Марк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.