ssh-туннелирование с сертификацией: как?

Я ознакомился с некоторыми основами настройки туннелирования SSH, например, с помощью шпатлевки. Один вопрос: как позволить двум концам SSH аутентифицировать друг друга на основе сертификата? Например, использование туннелирования SSH для удаленного доступа к VNC...

VNC == SSH (A) ===== SSH (B) === VNC 

Я хочу, чтобы A и B аутентифицировали друг друга. Можно утверждать, что VNC может иметь собственный пароль для защиты. Но дело не в этом. У меня может быть много приложений, работающих на A и B, которые не обязательно имеют защиту usr/pwd.

Я проверяю конфигурацию замазки, похоже, нет возможности использовать сертификат. Кто-то предлагает stunnel, но я хотел бы посмотреть, можно ли напрямую использовать SSH. Спасибо за предложение.


person user180574    schedule 07.01.2013    source источник


Ответы (1)


По какой-то конкретной причине вам нужно использовать сертификаты, а не только ключи ssh? Единственная известная мне причина заключается в том, что это снимает с администратора хоста бремя управления сложной конфигурацией authorized_keys файлов на хостах, на которых много пользователей, которые входят в систему.

OpenSSH представил сертификаты в версии 5.4, поэтому убедитесь, что вы используете по крайней мере эту версию на стороне сервера. Клиент также должен поддерживать сертификаты SSH, и на данный момент мне неясно, поддерживает ли это шпатлевка. Однако он поддерживает ключи ssh, и, если вам не нужны сертификаты, аутентификация на основе ключа должна быть всем, что вам нужно.

Вот хорошее чтение о сертификатах SSH: http://blog.habets.pp.se/2011/07/OpenSSH-certificates

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

Вы говорите это:

Я хочу, чтобы A и B аутентифицировали друг друга.

Используете ли вы ключи или сертификаты, вы получаете это уже из самого протокола ssh. Когда клиент подключается к серверу, он сравнивает ключ хоста со своими known_hosts локальными файлами. Если вы впервые заходите на этот сервер, он спросит вас, хотите ли вы его принять. Если ключ сервера изменился после того, как вы вошли в систему, вы получите предупреждение «Человек посередине» и, в зависимости от конфигурации вашего клиента, спросит вас, можно ли продолжить, или просто не позволит вам продолжить.

Это процесс аутентификации сервера перед клиентом, который происходит до того, как клиент попытается пройти аутентификацию на сервере.

person Corey Henderson    schedule 07.01.2013
comment
Спасибо большое. Для аутентификации сервера сертификат надежнее ключа хоста (и, возможно, более удобен). Для аутентификации клиента сертификат обеспечивает менее связанный механизм: вам не нужно настраивать учетную запись пользователя или копировать файл открытого ключа на сервер, что подходит для более однорангового сценария (как это необходимо для моей работы) . До этого я использую процесс сертификации SSL плюс собственный код tcp-туннелирования. С SSH я хотел бы посмотреть, можно ли избежать последней части. Есть идеи? - person user180574; 08.01.2013
comment
Как я уже сказал, проще для администратора, особенно на больших установках. Я бы сказал, что это не более сильный метод, но это ни здесь, ни там. Что касается того, что вы пытаетесь сделать, и A, и B аутентифицируются друг с другом. Какая вторая часть вопроса? - person Corey Henderson; 08.01.2013
comment
Я думаю, что теперь я лучше понимаю SSH благодаря вашей помощи. Спасибо еще раз. - person user180574; 09.01.2013