Як змусити клієнта ssh використовувати лише автентифікацію пароля?


375

Якщо я використовую autkey autkey від, наприклад: Ubuntu 11.04, як я можу встановити ssh-клієнт використовувати лише авторизацію пароля на сервері? (просто потрібне через тестування паролів на сервері, де я за замовчуванням входжу за допомогою ключа)

Я знайшов спосіб:

mv ~/.ssh/id_rsa ~/.ssh/id_rsa.backup
mv ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.backup

і тепер мені з’являється запит на пароль, але чи існують офіційні способи?

Відповіді:


578

Нещодавно мені це теж було потрібно, і я придумав це:

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no example.com

Вам потрібно переконатися, що клієнт не налаштований на заборону автентифікації пароля.


4
Мені потрібно було застосувати запит на введення пароля, щоб з’являтися в середовищі, коли Kerberos використовувався для автоматизованої аутентифікації, і аналогічна команда працювала для мене в тій конкретній ситуації: ssh -o GSSAPIAuthentication=no example.com
IllvilJa

21
Приємно. -o PubkeyAuthentication=noУ моєму випадку вистачило лише цього .
mivk

10
щоб вступити до другого ноутбука Osx, мені довелося використовувати: -o PreferredAuthentications=keyboard-interactive -o PubkeyAuthentication=no натомість
guideo

4
Це не працює для мене. Постійно говориться: У дозволі відмовлено (publickey). і ніколи не пропонує запит на введення пароля.
reinierpost

7
@reinierpost, ймовірно, тому що ssh- хост відключений PasswordAuthentication. Насправді я тут, бо хотів перевірити, чи відключення автентифікації паролів справно працювало на моєму хості.
RubberDuck

169

Я знайшов ярлик для цієї мети:

ssh user:@example.com

Зверніть увагу на двокрапку ( :) та порожній пароль після неї.


2
Документації поки немає. Насправді я прокинувся через OpenSSH вихідний код безрезультатно (його етап розбору є доволі виразним і тут ранок :)). Моя початкова мотивація: багато клієнтів вимагають ввести пароль, якщо вони дають порожній пароль, наприкладmysql -u user -p
Halil Özgür

43
Схоже, це вже не працює, принаймні, не в моєму випадку. sshклієнт сліпо намагався не пов’язані між собою приватні ключі для автентифікації на нещодавно встановленому сервері і продовжував відхиляти через максимальну кількість спроб, досягнутих, не запитуючи пароль. Для того, щоб примусити автентифікацію пароля для цього першого з'єднання, мені довелося використовувати -o PreferredAuthentications=passwordсинтаксис, хитрість двокрапки не мала помітного ефекту. Тому, хоча цей трюк, можливо, варто спробувати, не варто покладатися на нього як на послідовну поведінку.
WhiteWinterWolf

2
@ HalilÖzgür: Сумна новина, було набагато простіше запам’ятати та набрати;)!
WhiteWinterWolf

3
@Qualcuno, як сказав WhiteWinterWolf, він, на жаль, більше не працює на деяких платформах.
Halil Özgür

2
Переконайтеся, що у вашому файлі ssh_config у вас немає ні пароля аутентифікації!
Брайам

32

Як і спосіб, розміщений Scoopr, ви можете встановити параметри хоста у файлі конфігурації свого ssh-клієнта.

У своєму .sshкаталозі створіть файл під назвою config(якщо він ще не існує) та встановіть дозволи 600, потім можна створити розділи, які починаються з

host <some hostname or pattern>

а потім встановіть параметри хоста після цього, наприклад,

host bob.specific.foo
user fred

host *.home.example
user billy
port 9191

щоб ви могли мати

host server.to.test
PubkeyAuthentication=no

у цьому файлі, а потім просто

ssh server.to.test

і варіант буде підібраний.


Дякую за цю відповідь. Я створив запис у своєму ~/.ssh/configі додавPubkeyAuthentication no
Крейг Лондон,

2
Не працює для мене.
reinierpost

11

Нещодавно мені це було потрібно, але жоден із варіантів вище не працював, ssh -vпоказав, що параметри командного рядка, що передаються через -oкомутатор, переоцінювали значення, вказані в моєму ~/.ssh/configфайлі.

Що було таким:

ssh -F /dev/null <username>@<host>

На sshчоловіковій сторінці:

 -F configfile
     Specifies an alternative per-user configuration file.  If a
     configuration file is given on the command line, the system-wide
     configuration file (/etc/ssh/ssh_config) will be ignored. The default 
     for the per-user configuration file is ~/.ssh/config.

Кредити до цієї відповіді: Як я можу зробити ssh ігнорувати .ssh / config?


1
це не відповідає на питання. Ви завжди можете зберігати ключі в агенті, і ваш підхід не завадить клієнту використовувати їх.
Jakuje

Гм, як би вирішити це питання, а також те, що я згадав у своїй відповіді?
adeelx

2
Крім того, якщо у вас є ключі у стандартному розташуванні (як у запитанні), вони будуть використовуватися незалежно від того, присутній чи ні конфігурація. Я б пішов з одним із методів, згаданих у перших відповідях.
Jakuje

Не зовсім правда, я просто перевірив це на моєму Lubuntu 14.04, і хоча у мене є ключі у стандартному місці ~/.ssh/config, ключі не використовуються, якщо я вказую -F /dev/null. ssh -vВихід допомагає в цьому випадку, це чітко показує, що оскільки в моєму ssh-конфігурації *є загальна запис , він вирішує використовувати відкритий ключ, а не поважати параметри, передані через -oкомутатор, як у попередніх відповідях.
adeelx

1
Стандартне розташування ~/.ssh/id_rsaвказано на сторінці керівництва. Ці клієнти жорстко кодуються у клієнта. Просто переконайтеся, що ви надаєте правильного користувача під час тестування.
Jakuje

4

Я спробував кілька таких відповідей, але ssh -vпостійно показував, як мої відкриті ключі витягуються з домашнього каталогу. Однак, вказавши хибний ідентифікаційний файл, він зробив для мене фокус:

ssh -i /dev/null host

Я маю це робити постійно (щоб обійти зламаний сервер SSH в PDU, встановленому на стійці APC - тримайтеся далеко від цих речей, якщо ви піклуєтесь про безпеку - тому я в кінцевому підсумку вклав параметр у свій конфігураційний файл:

Host apc1 apc2
KexAlgorithms +diffie-hellman-group1-sha1
IdentityFile /dev/null

2

Відповіді @scoopr та @Halil Özgür для мене не спрацювали.

Це працювало для мене:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@example.com

Джерело: http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html


13
Питання стосується автентифікації клієнта паролем. Ця відповідь стосується перевірки відповідності ключа хоста серверів одному з відомих хостів. Насправді він відповідає на інше питання
Анігель

2

А також переконайтесь, що BatchMode=yesв .ssh / config немає активного. Інакше у вас немає жодного шансу отримати інтерактивну підказку пароля.


0

Я, можливо, єдиний у світі з цим питанням, але в мене була sshзапущена інша операційна система (choco ssh в Windows в оболонці cygwin) черезwhich ssh

Тож рішення було

 /usr/bin/ssh user@example.com

Зверніть увагу на повний шлях. Я зробив це після того, як я забігcyg-get openssh

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.