Это плохая идея использовать один и тот же закрытый ключ SSH на нескольких компьютерах?

35

Я недавно купил ноутбук, с которого мне нужно получить доступ к тем же удаленным хостам, что и с моего рабочего стола. Мне пришло в голову, что можно было бы просто скопировать файл секретного ключа со своего рабочего стола на мой ноутбук и избежать необходимости добавлять новый ключ к ~/.ssh/authorized_keysфайлам на всех хостах, к которым я хочу получить доступ. Итак, мои вопросы:

  1. Это вообще возможно?
  2. Есть ли неочевидные последствия для безопасности?
  3. Иногда я захожу на свой рабочий стол с моего ноутбука. Если бы использовался тот же ключ, это вызвало бы какие-либо проблемы?
Джейсон Крейтон
источник
2
Я подозреваю, что вы имеете в виду authorized_keys, а не unknown_hosts. Первый для входящих, второй для исходящих.
Мэтью Шинкель
Хороший улов. Исправлена.
Джейсон Крейтон

Ответы:

29

Да, это возможно Ваш закрытый ключ не привязан ни к одной машине.

Не уверен, что вы подразумеваете под неочевидным, это часто субъективно;). Совсем неплохо, если вы убедитесь, что у вас очень сильный набор паролей, по крайней мере, 20 символов.

Нет проблем с подключением с помощью того же ключа, что и на рабочем столе. Я бы настроил ssh agent для вашего ключа на ноутбуке и перенаправил его на рабочий стол, чтобы вы использовали этот ключ в других системах, к которым у вас есть доступ.

Со страницы руководства ssh-agent в системе Linux:

ssh-agent - это программа для хранения закрытых ключей, используемая для аутентификации с открытым ключом (RSA, DSA). Идея состоит в том, что ssh-agent запускается в начале сеанса X или сеанса входа в систему, а все другие окна или программы запускаются как клиенты для программы ssh-agent. Благодаря использованию переменных среды агент может быть найден и автоматически использован для аутентификации при входе на другие машины с использованием ssh (1).

Вы можете запустить это на своем ноутбуке, либо с помощью программы ssh-agent в Linux / Unix (она поставляется с OpenSSH), либо с агентом puTTY, если вы используете Windows. Вам не нужен агент, работающий на каких-либо удаленных системах, он просто хранит ваш закрытый ключ в памяти локальной системы, поэтому вам нужно всего лишь один раз ввести ключевую фразу, чтобы загрузить ключ в агент.

Переадресация агента - это функция клиента ssh ( sshили putty), которая просто перенаправляет агент в другие системы через соединение ssh.

jtimberman
источник
1
Я не совсем понимаю, что вы предлагаете в отношении пересылки ssh-агентов. Не могли бы вы подробнее остановиться на этом? Я должен отметить, что я не могу рассчитывать, что рабочий стол всегда будет доступен, когда мне нужно использовать свой ноутбук.
Джейсон Крейтон
Обновленный ответ :)
Jtimberman
10

Раньше я использовал один закрытый ключ на всех своих машинах (и на некоторых из них я только пользователь, а не администратор), но недавно изменил это. Он работает с одним ключом, но означает, что если вам нужно отозвать ключ (если он скомпрометирован), то вам нужно будет изменить его на всех машинах.

Конечно, если злоумышленник получит доступ и сможет подключиться по ssh к другой машине, он сможет получить ключ от этой машины и так далее. Но мне стало немного безопаснее узнать, что я могу отозвать только один ключ и заблокировать эту машину. Это означает, что мне нужно удалить ключ из файла author_keys.

Мэтью Шинкель
источник
Извините за некую старую запись, но считаете ли вы, что это может быть смягчено шифрованием вашего закрытого ключа с помощью пароля? Или в вашем случае пароль тоже был взломан?
Третий
1
Вероятно, это будет смягчено наличием ключевой фразы на ключе. В действительности вы, вероятно, могли бы использовать ssh forwarding (с использованием агента), а затем иметь только один ключ на каждую используемую вами реальную машину и фактически защитить ее паролем.
Мэтью Шинкель