Разработчик(и) | Проект OpenBSD |
---|---|
Репозиторий | github.com/openssh/openssh-portable/ |
Написано в | С |
Операционная система | Unix , Unix-подобный , Microsoft Windows |
Тип | Команда |
Лицензия | BSD , ISC , общественное достояние |
Веб-сайт | www.openssh.com |
Secure Shell (SSH) — это протокол, позволяющий осуществлять безопасный удаленный вход в компьютер в сети с использованием криптографии с открытым ключом . Клиентские программы SSH (например, ssh
OpenSSH ) обычно работают в течение сеанса удаленного входа и настроены на поиск закрытого ключа пользователя в файле в домашнем каталоге пользователя (например, .ssh/id_rsa
). Для дополнительной безопасности (например, от злоумышленника, который может прочитать любой файл в локальной файловой системе) обычно хранят закрытый ключ в зашифрованном виде, где ключ шифрования вычисляется из парольной фразы , которую запомнил пользователь. Поскольку ввод парольной фразы может быть утомительным, многие пользователи предпочли бы вводить ее только один раз за сеанс локального входа. Наиболее безопасное место для хранения незашифрованного ключа — это память программы, а в операционных системах типа Unix память обычно связана с процессом . Обычный клиентский процесс SSH не может использоваться для хранения незашифрованного ключа, поскольку клиентские процессы SSH существуют только в течение сеанса удаленного входа. Поэтому пользователи запускают программу под названием ssh-agent , которая работает дольше, чем длится локальный сеанс входа в систему, хранит незашифрованные ключи в памяти и взаимодействует с клиентами SSH с помощью сокета домена Unix .
ssh-agent
создает сокет, а затем проверяет соединения из ssh
. Каждый, кто может подключиться к этому сокету, также имеет доступ к ssh-agent
. Разрешения устанавливаются как в обычной системе Linux или Unix . При запуске агент создает новый каталог в /tmp
с ограничительными разрешениями. Сокет находится в этом каталоге.
Существует процедура, которая может помешать вредоносному ПО использовать ssh-agent
сокет. Если эта ssh-add -c
опция установлена при импорте ключей в ssh-agent
, то агент запрашивает подтверждение у пользователя с помощью программы, указанной SSH_ASKPASS
переменной среды , всякий раз, когда ssh
пытается подключиться.
Ssh-агенты могут быть "перенаправлены" на сервер, к которому вы подключаетесь, делая их ключи доступными и там, для других подключений. В локальной системе важно, чтобы пользователь root был надежным, поскольку пользователь root может, помимо прочего, просто прочитать файл ключа напрямую. В удаленной системе, если ssh-agent
соединение перенаправлено, также важно, чтобы пользователь root на другом конце был надежным, поскольку он может получить доступ к сокету агента на удаленной системе (но не к ключу, который остается локальным).
Существует множество различных программ, которые выполняют ту же функциональность, что и OpenSSH ssh-agent, некоторые из них имеют совершенно другой пользовательский интерфейс. PuTTY , например, использует графический пользовательский интерфейс в своем встроенном Pageant ssh-agent.
Существуют инструменты, предназначенные для предоставления функциональности key-agent как для симметричных, так и для асимметричных ключей; они обычно предоставляют функциональность ssh-agent как один из своих интерфейсов приложений. Примерами являются GNOME Keyring и KWallet .
Некоторые монолитные клиенты SSH включают возможность запоминания паролей SSH между сеансами. Примеры включают: SecureCRT .
В операционной системе macOS ssh-agent был интегрирован с версии Leopard 10.5 в 2007 году. Ранее были доступны сторонние реализации ssh-agent с открытым исходным кодом. [1]
Клиентские и серверные программы на основе OpenSSH включены в Windows 10 , начиная с версии 1803. Клиент SSH и ключевой агент включены и доступны по умолчанию, а сервер SSH является дополнительной функцией по запросу. [2] [3]