open ssh agent что это
Использование встроенного SSH клиента в Windows 10
В Windows 10 и Windows Server 2019 появился встроенный SSH клиент, который вы можете использовать для подключения к *Nix серверам, ESXi хостам и другим устройствам по защищенному протоколу, вместо Putty, MTPuTTY или других сторонних SSH клиентов. Встроенный SSH клиент Windows основан на порте OpenSSH и предустановлен в ОС, начиная с Windows 10 1809.
Установка клиента OpenSSH в Windows 10
Клиент OpenSSH входит в состав Features on Demand Windows 10 (как и RSAT). Клиент SSH установлен по умолчанию в Windows Server 2019 и Windows 10 1809 и более новых билдах.
Проверьте, что SSH клиент установлен:
В нашем примере клиент OpenSSH установлен (статус: State: Installed).
Если SSH клиент отсутствует (State: Not Present), его можно установить:
]Бинарные файлы OpenSSH находятся в каталоге c:\windows\system32\OpenSSH\.
Как использовать SSH клиенте в Windows 10?
ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
[-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
destination [command]
Для подключения к удаленному серверу по SSH используется команда:
Если SSH сервер запущен на нестандартном порту, отличном от TCP/22, можно указать номер порта:
Например, чтобы подключиться к Linux хосту с IP адресом 192.168.1.202 под root, выполните:
Затем появится запрос пароля указанной учетной записи, укажите пароль root, после чего должна открытся консоль удаленного Linux сервера (в моем примере на удаленном сервере установлен CentOS 8).
Если вы используете SSH аутентификацию по RSA ключам (см. пример с настройкой SSH аутентификации по ключам в Windows), вы можете указать путь к файлу с закрытым ключом в клиенте SSH так:
Также вы можете добавить ваш закрытый ключ в SSH-Agent. Сначала нужно включить службу ssh-agent и настроить ее автозапуск:
set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agent
Добавим ваш закрытый ключ в базу ssh-agent:
Теперь вы можете подключиться к серверу по SSH без указания пути к RSA ключу, он будет использоваться автоматически. Пароль для подключения не запрашивается (если только вы не защитили ваш RSA ключ отдельным паролем):
Еще несколько полезных аргументов SSH:
SCP: копирование файлов из/в Windows через SSH
С помощью утилиты scp.exe, которая входит в состав пакета клиента SSH, вы можете скопировать файл с вашего компьютера на SSH сервер:
scp.exe «E:\ISO\CentOS-8.1.1911-x86_64.iso» root@192.168.1.202:/home
Можно рекурсивно скопировать все содержимое каталога:
И наоборот, вы можете скопировать файл с удаленного сервера на ваш компьютер:
scp.exe root@192.168.1.202:/home/CentOS-8.1.1911-x86_64.iso e:\tmp
Итак, теперь вы можете прямо из Windows 10 подключаться к SSH серверам, копировать файлы с помощью scp без установки сторонних приложений и утилит.
какова цель ssh-agent?
Я прочитал официальное определение:
Агент SSH обрабатывает подпись данных аутентификации для вас. При аутентификации на сервере вы должны подписать некоторые данные, используя свой закрытый ключ, чтобы доказать, что вы, в общем-то, вы.
В качестве меры безопасности большинство людей разумно защищают свои закрытые ключи парольной фразой, поэтому любая попытка аутентификации потребует от вас ввода этой парольной фразы. Это может быть нежелательно, поэтому ssh-agent кеширует ключ для вас, и вам нужно ввести пароль только один раз, когда агент захочет его расшифровать (и зачастую даже не так, поскольку ssh-agent может быть интегрирован с pam, что делают многие дистрибутивы).
Агент SSH никогда не передает эти ключи клиентским программам, а просто представляет сокет, по которому клиенты могут отправлять ему данные и по которому он отвечает подписанными данными. Дополнительным преимуществом этого является то, что вы можете использовать свой закрытый ключ даже с программами, которым вы не полностью доверяете.
Еще одно преимущество агента SSH заключается в том, что его можно пересылать через SSH. Поэтому, когда вы пересылаете своего агента по ssh на хост A, вы можете затем перешагнуть ssh с A на другой хост B без необходимости присутствия вашего ключа (даже в зашифрованном виде) на хосте A.
/.ssh/config «s IdentityFile вариант хорош для, с или без агента
/.ssh/config какой ключ использовать для какого удаленного хоста, чтобы он точно знал, какой из них ему нужен.
Преимущество ssh-agent заключается в том, что вам нужно ввести пароль только один раз. Если ваш закрытый ключ RSA не зашифрован парольной фразой, тогда ssh-agent не требуется. Команда ssh будет примером клиента.
Еще одним преимуществом является то, что, согласно man странице, агент никогда не отправляет закрытый ключ по своему каналу запроса; поэтому, если вы переключаетесь между разными окнами, ваши закрытые ключи защищены.
1 Вы можете установить life время удержания клавиш в агенте.
Статья в Википедии, вероятно, имеет лучшее описание:
Проверка на сервере основана на аутентификации запрос-ответ. ssh подключается к серверу с именем пользователя и запросом ключа. Демон ssh получает запрос и отправляет обратно запрос на основе открытого ключа, хранящегося в файле аутентификации. ssh использует закрытый ключ для создания ответа ключа и отправляет его ожидающему sshd на другом конце соединения. Сам секретный ключ не отправляет. Демон ssh проверяет ответ ключа и, если он действителен, предоставляет доступ к системе. ssh-agent упрощает это, создавая сокет, который прослушивает SSH-соединения. Пользователь просто запускает ssh-agent, сообщая ему, как найти свои ключи (если они не находятся в расположении по умолчанию), вводит ключевую фразу для каждого используемого ключа, единовременно,
Опять дословно из статьи в википедии:
. ssh-agent создает сокет и затем проверяет соединения из ssh. Каждый, кто может подключиться к этому сокету, также имеет доступ к ssh-агенту. Права доступа установлены как в обычной системе Linux или Unix. Когда агент запускается, он создает новый каталог в / tmp с ограниченными правами. Гнездо находится в папке.
В моей системе Fedora 14 она запускается довольно рано как часть подсистемы X11. В этом файле /etc/X11/xinit/xinitrc-common :
При включении этого здесь следующие переменные среды устанавливаются как часть родительской оболочки, поэтому они должны быть у всех разветвленных потомков, например:
Например, в GNOME ssh-agent фактически запускается для каждого пользователя в качестве запускаемого приложения:
TL; DR
Суть в том, ssh-agent что когда вам нужны ssh-ключи, вам нужно всего лишь один раз разблокировать их парольной фразой (при условии, что она есть), и с тех пор они доступны в расшифрованном виде в памяти (RAM).
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
SSH (ч.1): Что такое SSH. Утилиты SSH
Оглавление
Что такое и для чего нужен SSH
SSH — это набор программ, которые позволяют выполнить вход на удалённую машину для выполнения команд на ней. Он предназначен для обеспечения защищённой зашифрованной связи между двумя узлами через незащищённую сеть. Соединения X11, произвольные порты TCP и сокеты домена UNIX также могут быть переадресованы по защищённому каналу. В SSH входят программы, которые дополнительно позволяют передавать файлы по зашифрованному соединению.
SSH несёт в себе различные улучшения безопасности, среди них аутентификация пользователя/хоста, шифрование данных и целостность данных, благодаря чему невозможны популярные атаки вроде подслушивания (сниффинга), DNS/IP спуфинга, подделка данных (data forgery), перехват соединения (connection hijacking) и т. д. Пользователям ftp, telnet или rlogin, которые используют протокол, передающий данные в виде открытого текста, крайне рекомендуется переключиться на SSH.
OpenSSH — это реализация с открытым исходным кодом протокола SSH, позволяющая шифровать соединение в сети посредством набора программ. Если вам хочется иметь SSH на Linux, вы можете установить OpenSSH, который состоит из сервера OpenSSH и клиентских пакетов.
Технология работает по принципу сервер-клиент. То есть на удалённой машине, на которой вы хотите выполнять команды, нужно запустить сервер OpenSSH. К этому серверу можно подключаться с помощью клиентов OpenSSH. На одном компьютере могут быть одновременно установлены и сервер и клиент. Их запуск и настройка выполняется независимо друг от друга.
Утилиты SSH
К серверным утилитам OpenSSH относятся:
Итак, на сервере основного внимания требует sshd, а программа sftp-server будет запущена автоматически по мере необходимости.
К клиентским утилитам OpenSSH относятся:
Это основные программы, которые могут понадобиться большинству пользователей для создания ключей, подключения к удалённой машине и при удалённом копировании файлов.
Следующие утилиты присутствуют в пакете OpenSSH, но не требуют от пользователя явного запуска или применяются редко:
Как установить OpenSSH
Для некоторых конфигураций служба OpenSSH установлена и включена по умолчанию. Как правило, это относится к системам, к которым затруднительно получить доступ иным способом, кроме как по SSH. Например, на хостингах VPS (виртуальных частных серверов) устанавливаемые системы практически всегда даже в минимальной конфигурации уже имеют установленную и запущенную службу SSH, поэтому после развёртывания нового сервера, клиенту достаточно подключиться используя присланные учётные данные.
В образах для ARM компьютеров, которые зачастую не имеют дисплея, как правило служба OpenSSH уже установлена и запущена.
В Debain и производных (Kali Linux, Linux Mint, Ubuntu), программы OpenSSH можно установить по отдельности, например, имеются пакеты для клиента и для сервера openssh-client и openssh-server. Либо можно установить метапакет ssh, который содержит и клиентскую, и серверную часть.
В Arch Linux клиент и сервер OpenSSH собраны в один пакет. Для установки OpenSSH в Arch Linux выполните:
В других дистрибутивах Linux поищите пакет openssh или ssh.
Управление службой OpenSSH
Клиент ssh запускается самим пользователем по мере необходимости.
Запуск службы OpenSSH требуется только на сервере.
OpenSSH поставляется с файлами служб systemd (смотрите также «Как использовать Systemctl для управления службами Systemd и юнитами») двух видов:
Таким образом, если вы хотите воспользоваться первой моделью (демон SSH всегда активен), то для запуска службы и добавления её в автозагрузку наберите следующие команды:
Они добавят демона SSH в автозагрузку и запустят его прямо сейчас.
Для второй модели (запуск SSH только по требованию), сделайте так:
sudo systemctl start sshd.socket
sudo systemctl enable sshd.socket
Для проверки статуса службы:
Либо если вы используете сокет:
systemctl status sshd.socket
Обратите внимание, что в разных дистрибутивах служба может называться ssh или sshd, следовательно, в приведённых выше и далее командах, используйте имена:
Как проверить журнал событий SSH службы
События SSH можно разделить на события:
Просмотреть логи SSH можно различными способами, один из вариантов (помните, что в некоторых системах служба называется ssh.service, без буквы d):
Например, для вывода последних 100 записей:
Также можно просмотреть события SSH с помощью:
Универсальная команда в независимости от имени службы:
Для вывода событий, связанных с подключением пользователей, другой информации, в том числе отладочной (зависит от настройки уровня подробности сообщений), можно посмотреть следующим образом:
Как увидеть неудачные попытки входа SSH
Если настроен вход по паролю, то для вывода неудачных попыток наберите команду:
Если настроен вход по публичному ключу, но не отключена возможность входа по паролю, то после неверного ключа, будет предоставлена возможности войти по паролю. Такие неудачные попытки входа по паролю можно найти такой же командой:
При неудачной попытке входа из-за неверного ключа, при уровне вербальности (LogLevel) по умолчанию (INFO) специальные сообщения не записываются в журнал. Подобные неудачные попытки можно обнаружить по записи «Connection closed by authenticating user», но она означает отключение на этапе аутентификации, независимо от способа аутентификации — по паролю или по ключу.
Если установить уровень вербальности на VERBOSE, то в журнале можно будет найти записи о неудачных попытках входа с помощью публичного ключа следующей командой:
Подробнее об этой настройке во второй часте.
Как просмотреть журнал подключений пользователей SSH
Чтобы показать подключения, когда вход был сделан по паролю:
Чтобы показать подключения аутентификации по публичному ключу:
Другой вариант просмотреть историю входов, это использовать следующую команду:
Про SSH Agent
Введение
SSH-agent является частью OpenSSH. В этом посте я объясню, что такое агент, как его использовать и как он работает, чтобы сохранить ваши ключи в безопасности. Я также опишу переадресацию агента и то, как она работает. Я помогу вам снизить риск при использовании переадресации агента и поделюсь альтернативой переадресации агента, которую вы можете использовать при доступе к своим внутренним хостам через bastion’ы.
Что такое SSH-agent
Агент SSH хранит секретные ключи в безопасности из-за того, что он не делает:
Но если агент может только подписывать сообщения, как SSH шифрует и расшифровывает трафик?
При первом изучении открытых и закрытых ключей SSH естественно предположить, что SSH использует эти пары ключей для шифрования и дешифрования трафика. Именно так я и думал. Но это не тот случай. Пара ключей SSH используется только для аутентификации во время первоначального соединения.
Например, вот как проверяется ключ пользователя во время SSH-соединения, с точки зрения сервера:
Протокол агента
Протокол агента настолько прост, что можно было бы написать базовый SSH-agent за день или два. Он имеет только несколько основных операций:
Команда ssh-add — это ваш шлюз к агенту SSH. Он выполняет все эти операции, кроме подписи. Когда вы запускаете ssh-add без каких-либо параметров, он будет сканировать ваш домашний каталог на наличие некоторых стандартных ключей и добавлять их в ваш агент. По умолчанию он ищет:
Что такое переадресация агента
Функция переадресации агента позволяет вашему локальному агенту SSH связаться через существующее SSH-соединение и прозрачно аутентифицироваться на более удаленном сервере. Например, предположим, что вы входите по SSH в инстанс EC2 и хотите клонировать оттуда приватный репозиторий GitHub. Без переадресации агента вам придется хранить копию вашего приватного ключа GitHub на хосте EC2. При переадресации агента SSH-клиент на EC2 может использовать ключи на вашем локальном компьютере для аутентификации на GitHub.
Как работает переадресация агента
Переадресация агента связана с определенным риском
Когда вы переадресовываете доменный сокет ssh-agent Unix на удаленный хост, это создает угрозу безопасности: любой человек с root доступом на удаленном хосте может незаметно получить доступ к вашему локальному SSH-agent’y через сокет. Они могут использовать ваши ключи, чтобы выдавать себя за вас на других машинах в сети.
Вот пример того, как это может выглядеть:
Как снизить свой риск при переадресации агента
Вот несколько способов сделать переадресацию агента более безопасной:
Или используйте альтернативный агент SSH, который запрашивает вас, когда он используется. Sekey использует Touch ID на macOS для хранения ключей в анклаве безопасности MacBook Pro.
Или вообще не используйте переадресацию агента. Если вы пытаетесь получить доступ к внутренним хостам через bastion, ProxyJump — гораздо более безопасная альтернатива для этого варианта использования. (смотреть ниже)
Используйте ProxyJump : более безопасная альтернатива
Вместо того чтобы перенаправлять agent’a по отдельному каналу, ProxyJump перенаправляет стандартный вход и выход вашего локального SSH-клиента через bastion и далее на удаленный хост. Вот как это работает:
Затем я просто запускаю ssh cloud.computer.internal для подключения к внутреннему назначению через bastion — без переадресации агента.
Если ProxyJump не работает…
Узнайте подробности, как получить востребованную профессию с нуля или Level Up по навыкам и зарплате, пройдя онлайн-курсы SkillFactory:
Faq по OpenSSH в русской редакции
OpenSSH это СВОБОДНАЯ версия известного набора сетевого инструментария SSH, количество поклонников и пользователей которого в Internet существенно возросла и продолжает расти. Большинство пользователей таких программ как telnet, rlogin, ftp, и других подобных программ не знают или осознают что эти программы передают по сети пользовательские пароли в нешифрованном виде в отличие от OpenSSH. OpenSSH шифрует весь передаваемый трафик (включая пароли) и эффективно предотвращает подслушивание, похищение.перехват соединений и другие виды сетевых атак.
Пакет OpenSSH включает в себя ssh(1) программу для замены таких средств как rlogin и telnet, программу scp(1) которая заменяет такие средства как rcp(1) и ftp(1). Недавно в OpenSSH были реализованы и добавлены sftp(1) и sftp-server(8) которые реализуют простую передачу файлов.
OpenSSH consists of a number of programs.
OpenSSH это набор программ для обеспечения безопасной работы в сети, ниже приводится список предоставляемых возможностей этого инструментария:
На настоящий момент, почти все коммуникации в компьютерных сетях сделаны без шифрации. И как результат, любой кто имеет доступ к компьютеру подключенномув сеть сможет подслушать практически любые сетевые соединения. Этим методом могут воспользоваться хакеры, любопытные системные администраторы, предприниматели, криминальные элементы, промышленные шпионы или правительственные службы. Некоторые сети и компьютерное оборудование имеют достаточное электромагнитное излучение благодаря которому данные могут быть сняты даже на расстоянии.
Когда вы осуществляет заход на удаленный компьютер в сети, ваш пароль передается в сети открытым текстом. Поэтому любой подслушавший ваш login и пароль в сети, сможет им воспользоваться чтобы сделать любую гнусность которую он пожелает. Большинство подобных инцендентов наблюдалось на тех компьютерах в сети, которые остались без компетентного администрирования и на них были установлены программы прослушивания сети и сбора паролей. Подобные программы свободно доступны в сети Internet или могут быть написаны компетентным программистом за несколько часов.
Существует масса секретной информации, коммерческие тайны, патенты на изобретения, закрытая информация о ценах, информация о подрядчиках и контрактерах, данные клиентов, личные данные, финансовая информация и т.д. и т.п. И в настоящее время, любой кто имеет доступ к сети (любой компьютер в сети) может подслушать все что передается по сети, без каких-либо ограничений доступа.
Многие компании не представляют что информация так легко может быть извлечена при наличии доступа в сеть. Они полагают что их данные в безопасности потому что никому не известно что информация в сети может быть подслушана или потому что количество передаваемых в сети данных слишком велико. Это не безопасная политика.
Несмотря на то что OpenSSH разработан в рамках проекта OpenBSD тем не менее существует масса его портов для других операционных систем. Проект портирования версий OpenSSH возглавляет Damien Miller. Для быстрого обзора портированных версий OpenSSH смотрите: http://www.openssh.com/portable.html. Короткий список других OS’s которые поддерживают OpenSSH, приведен ниже.
Список производителей которые включают OpenSSH в свои дистрибутивы можно найти на странице www.openssh.com/users.html.
Разработчики OpenSSH приложили много труда и усилий чтобы сохранить этот проект свободным от каких либо патентов или проблем с copyright. Чтобы реализовать это пришлось наложить ограничения для некоторых опций, а именно, для запатентованных алгоритмов.
OpenSSH не поддерживает запатентованные транспортные алгоритмы. В режиме работы SSH1, поддерживаются опции для 3DES и Blowfish. В режиме работы SSH2, можно использовать лишь алгоритмы 3DES, Blowfish, CAST128, Arcfour и AES. Запатентованный алгоритм IDEA не поддерживается.
OpenSSH обеспечивает поддержку обоих протоколов и SSH1, и SSH2.
С тех пор как истекло время ограничения на использование патента RSA, больше не существует ограничений на использование алгоритма RSA в программных продуктах, включая OpenBSD.
Существует масса мест в Internet где можно получить помощь или консультации, в дополнение к основному вебсайту OpenSSH: http://www.openssh.com, существует много списков рассылки, можете воспользоваться ими. Однако перед тем как задать вопросы в эти списки, предварительно поищити необходимую вам информацию через поиск по архивам этих списков рассылки, чтобы не повторять вопросы на которые уже известен и был дан ответ. Один из списков и архив можно найти по ссылке: theaimsgroup.com.
Более подробную информацию по подписке на OpenSSH и связанные с ним списки рассылок можно найти на странице: www.openssh.com/list.html.
Эти сообщения выдаются потому что OpenSSH сперва пытается определить какой метод авторизации использует пользователь при входе (например empty password). К сожалению PAM регистрирует любые попытки авторизации, включая указанные и записывает их в логи.
Если это раздражает или мешает вам, установите «PermitEmptyPasswords no» в sshd_config. Это оградит вас от подобных сообщений и запретит вход по беспарольным аккаунтам. Эта опция используется по умолчанию в случае конфигурационного файла sshd_config из поставки OpenSSH.
Чтобы разрешить использовать пустые пароли в OpenSSH, собранным с поддержкой PAM вам необходимо добавить флаг nullok в строке соответствующего модуля проверки пароля в конфигурационном файле PAM /etc/pam.d/sshd. Например:
auth required/lib/security/pam_unix.so shadow nodelay nullok
Это необходимо сделать в дополнение к установкам «PermitEmptyPasswords yes» в sshd_config файле.
Существует одно важное замечание по использованию пустых паролей с PAM авторизацией: PAM будет разрешать задавать любые пароли при авторизации через вход с пустым паролем. И это нарушает проверку которую sshd(8) использует для определения что данный аккаунт без пароля и гарантированного доступа пользователю невзирая на значение указанное в PermitEmptyPasswords. Вот почему в целях безопасности не рекомендуется добавлять директиву nullok вашу конфигурацию PAM до тех пор пока у вас не осталось иного варианта как разрешить работу с пустыми паролями.
Ядро Linux пытается найти (через modprobe) и подгрузить протокол семейства 10 (IPv6). Либо вручную подгрузите в ядро соответствующий модуль, либо задайте правильный алиас в файле подгружаемых модулей /etc/modules.conf или отключите поддержку IPv6 в /etc/modules.conf.
Иногда в целях дурако-устойчивости файл /etc/modules.conf в Linux может иметь имя /etc/conf.modules.
В Slackware 7.0, OpenSSH необходимо собирать с крипто-библиотекой libcrypt.
Убедитесь в том что ваши библиотеки OpenSSL были собраны с внутренней поддержкой RSA или DSA или через RSAref. Реализация RSA и DSA включены в OpenSSL и их использование в OpenSSH зависит от того как были собраны библиотеки OpenSSL которые использует OpenSSH.
Программа scp(1) должна находится в директории которая находится в пути/PATH как у клиента, так и сервера. Если вы хотите разместить эту программу в специальной директории, вам необходимо задать ее в опции —with-default-path в соответстии с заданным вами маршрутом программа будет разыскиваться в этом пути на сервере. Эта опция заменяет поиск в пути по умолчанию, поэтому вам необходимо указать все необходимые директории для поиска в пути, включая ту где находится программа scp. Например:
В некоторых операционных системах устройство /dev/tty имеет некорректно установленные права, в результате чего невозможно прочитать пароль с данного устройства, о чем и выдается ошибка:
You have no controlling tty. Cannot read passphrase.
Для решения этой проблемы установите для устройства /dev/tty права 0666 и сообщите об этой ошибке продавцу вашей OS.
Если в вашем дистрибутиве отсутствует файл ‘configure’ или процесс сборки `make` завершился с сообщениями об ошибках вида «missing separator», вероятно вы загрузили или скачали версию OpenSSH для дистрибутива OpenBSD, а пытаетесь откомпилировать на другой платформе. Пожалуйста прочтите информацию о портированных версиях на странице portable version возьмите необходимый вам дистрибутив OpenSSH в соответствии со ссылками для вашей OS.
/.bashrc. В остальных случаях, читайте руководства по вашему SHELL как разрешить послать сигнал HUP активным процессам при выходе.