Як я можу змусити SSH надати ключ RSA замість ECDSA?


16

Після першого доступу до сервера, як я можу змусити SSH надати мені ключ RSA і автоматично зберігати його, якщо користувач схвалить його?

Наразі він пропонує мені ключ ECDSA. Оскільки я вже знаю ключ RSA, я вважаю за краще, щоб ключ RSA був представлений у цей момент.

Я намагався:

ssh -o RSAAuthentication=yes user@server

На жаль, це дає мені ключ ECDSA та Are you sure you want to continue connecting (yes/no)?повідомлення.


У мене схожа ситуація. Сервер А. Клієнт B. На B: ssh A спочатку попросить вас ключ. На Cleint C: ssh A спочатку попросить вас про passwrd, після невдалої спроби клієнта C використати ключ ECDSA, я побачив це в журналі A. Якщо я передзавантажую rsa ключ на C, тоді ssh A підключиться щасливо . Як я не дозволяю C використовувати ключ ECDSA як першу спробу?
Кемін Чжоу

Відповіді:


14

Видаляючи алгоритми ECDSA із HostKeyAlgorithmsзмінної конфігурації.

ssh -o HostKeyAlgorithms=ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss user@server

Я просто видалив усі алгоритми ECDSA зі списку за замовчуванням .

Ви можете, звичайно, помістити це у свій .ssh/configдля цієї машини:

Host: server
    HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss

Для OpenSSL 1) немає двокрапки після хоста, і 2) список за замовчуванням, схоже, змінився з моменту опублікування цього запису. Спробуйте HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-rsaзамість цього.
ковбасник

6

Не використовуйте RSA, оскільки ECDSA є новим за замовчуванням.

На сервері зробіть це: ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub і запишіть це число.

На клієнті ви можете надати SSH хосту, і якщо і коли ви побачите те саме число, ви можете відповісти на запит Are you sure you want to continue connecting (yes/no)?ствердно. Тоді ключ ECDSA буде записаний на клієнті для подальшого використання.


3
так, але як бути, якщо у мене є старий додаток, якому потрібен RSA для підтримки сумісності, поки не буде бізнес-рішення про оновлення до ecdsa?
enthusiasticgeek

@RobertSiemer лише оригінальний плакат запитання може змінити прийняту відповідь. Я не в змозі цього зробити.
enthusiasticgeek

1
H2ONaCl: будь ласка, змініть прийняту відповідь. Цей не робить того, про що ви просили. @enthusiasticgeek вибачте, мішанка.
Роберт Сімер

Дефолт (звернення до авторитету) та новий (звернення до новизни) не обов'язково означає краще. RSA як і раніше вважається сильним ... лише на біт до 4096, якщо ви хочете більше сил (2048 може бути застарілим незабаром). І якщо ви хочете хорошого альго-EC, використовуйте ed25519. ECDSA смокче, тому що використовує слабкі криві NIST, які, можливо, навіть піддані обробці; це вже давно відома проблема. Тож для підтримки застарілої версії ввімкніть RSA та для ідеального альго використовуйте ed25519 ... завжди вимикайте DSA, який давно застарів (головна причина - фіксований розмір 1024 бітового ключа), а також відключіть ECDSA. Спробуйте ssh-audit для отримання додаткової інформації.
Пітер

5

Так, скоро перейдіть на ECDSA, але тим часом спробуйте це:

ssh -o HostKeyAlgorithms=ssh-rsa -o FingerprintHash=md5 user@example.com

Це дає "неправильний параметр конфігурації: fingerprinthash" у моїй системі (OpenSSH_6.6.1p1).
Сорен Бьорнстад

1
@SorenBjornstad, FingerprintHashваріант непотрібний, просто залиште всю цю частину вимкнено.
Лукас

2

Я щойно додав цей рядок

HostKeyAlgorithms ssh-rsa

до

/etc/ssh/sshd_conf

і в цій версії він працює чудово.

OpenSSH_7.7p2 ubuntu-4ubuntu2.2

1

Просто для вдосконалення відповіді метелика, який містить мертве посилання для пошуку старого списку алгоритмів.

Спочатку визначтесь із списком алгоритмів. Щоб знайти старий список, використовуйте ssh -vv:

ssh -vv somehost

І шукайте два рядки на зразок "алгоритми ключових ключів: ...", де перший, як видається, є пропозицією сервера, а другий - клієнтом. Або вибирати ці два рядки автоматично, спробуйте це (і вийти з натискання клавіш ctrl + d):

ssh -vv somehost 2>&1 | grep "host key algorithms:"

Тепер відфільтруйте його ... ви повинні видалити всі файли dss / dsa, оскільки вони давно застаріли, а також ви хотіли видалити ecdsa (як і я), наприклад, якщо у вас був:

ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Ви повинні закінчити:

ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Тепер відредагуйте свою конфігурацію. Для власної конфігурації:

vim ~/.ssh/config

Для конфігурації системи:

sudo vim /etc/ssh/ssh_config

Додайте новий рядок у всьому світі:

HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

або для конкретного хоста (не ідеально для конфігурації сервера):

Host somehost
    HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Замість списку, який я ввів, вставте список, який ви отримали з ssh -vvрезультату, не включаючи частину "алгоритми ключового ключа:".


0

деякі пункти заплутані, чи можливо видалити ключові алгоритми з існуючих за замовчуванням клавіш найвищого рівня - це нові клавіші RSA-sha2 / 256/512 та ed25519 для найкращої безпеки за допомогою ssh-keygen -t ras -a -b 4096 -a 113 до ген. Підтримка застарілої версії, очевидно, читає ssh новини, що ssh1 повністю знищиться - її 45-бітовий та 96-бітний максимум - dsa-клавіші також знецінено. Його фіксовано на 128/1024 біт макс. (можливо, NSA зробив це і кульгав / виправдовувався, оскільки код налагодження залишив сумніви в тому, що називати його безпроблемним), тому всі високооплачувані захищені ключові структури RSA повинні бути перероблені, щоб підтримувати і підтримувати більш високі стандарти. встановіть, які ключі ви хочете використовувати, як описано в / etc / ssh / sshd_config, спробуйте виконати 2 ключ auth 3 ключ також працює, тобто: sshd_config "AuthenticationMethods publickey, publickey, publickey" - переконайтеся, що списки ssh-Q kex відповідають як серверам A, так і B або настільним комп’ютерам, як, наприклад, можливо зробити різницю у їх результатах - і переконайтеся, що однакові ключові алгоритми exhng відповідають. Клавіші ecdsa, новіші у виробництві, також не використовуються. або get - keyexchange відхилено частковий доступ до безпечного msg. Багато хорошого infoz просто терплячий шукати його.


2
Чи можете ви спробувати розбити цю стіну тексту, щоб її було легше слідувати? Будь ласка, скористайтесь посібником із форматування та кодом формату та вмістом текстового файлу як кодом, і якщо це зробить речі зрозумілішими, розмістіть їх у власних рядках. Я б із радістю відредагував вашу відповідь сам, якби міг би дотримуватися її, але не можу.
Занна

-5

Або якщо ви наполягаєте на тому, щоб мати ключовий підхід RSA, ви можете ввести ssh-keygen -t rsaсервер, на який ви маєте намір SSH.

Це повинно генерувати відкриті та приватні ключі RSA під '~ / .ssh / id_rsa'. Тепер все, що вам потрібно зробити, - скопіювати відкритий ключ під$HOME/.ssh/authorized_keys усі ті машини, з яких ви маєте намір перейти на машину, на якій ви створили ваші RSA ключі.

А потім сідайте і відпочивайте!


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