- Что такое OpenSSH? Как включить и использовать OpenSSH в Windows 10
- Что такое OpenSSH
- Действия по включению OpenSSH в Windows 10
- Использование встроенного SSH клиента в Windows 10
- Установка клиента OpenSSH в Windows 10
- Как использовать SSH клиенте в Windows 10?
- SCP: копирование файлов из/в Windows через SSH
- powered by leo blog .
- Авторизация по SSH ключу
- Шифрованное копирование файлов
- OpenSSH в среде Windows OpenSSH in Windows
Что такое OpenSSH? Как включить и использовать OpenSSH в Windows 10
Если вы заядлый разработчик, вы, возможно, уже заметили, что Microsoft наконец-то добавила поддержку SSH-соединений в Windows 10 . Это интеграция OpenSSH в Windows 10, которая поставляется с выпуском Windows 10 Fall Creators Update. Теперь пользователи получают возможность отключить клиентское программное обеспечение SSH, например PuTTY , для подключения к локальному или серверу, расположенному в Интернете. Если вы новичок в этом, давайте сначала обсудим, что такое SSH или Secure Shell.
Что такое OpenSSH
SSH или Secure Shell – это не что иное, как общий протокол, подобный FTP или HTTP, который используется для отправки данных из источника в пункт назначения. Но здесь отправленные данные строго зашифрованы. OpenSSH очень популярен среди разработчиков, работающих на машинах Linux, поскольку он позволяет им получать доступ к удаленному серверу в сети и управлять им.
Прежде чем мы начнем, я хотел бы отметить, что эта функция доступна как бета-версия и может иногда показывать некоторые глюки.
Действия по включению OpenSSH в Windows 10
С функциями Windows:
Перейдите в «Настройки»> «Приложения»> «Приложения и функции» или перейдите по этому адресу:
Теперь нажмите Управление дополнительными функциями.
Выберите Добавить функцию. Это приведет вас к новой странице.
Прокрутите вниз до Клиент OpenSSH (бета) и Сервер OpenSSH (бета) .
Установите их оба и перезагрузите компьютер
Это загрузит и установит все компоненты по этому пути:
Теперь вы можете использовать Powershell или командную строку (CMD), чтобы перейти к указанному пути, а затем начать работать с SSH, как в Linux.
С подсистемой Windows для Linux (WSL)
Прежде всего, откройте меню «Пуск» и введите Функции Windows , а затем выберите Включить и выключить функции Windows.
Установите флажок Подсистема Windows для Linux и нажмите ОК.
Перейдите в магазин Microsoft Store и найдите Ubuntu .
Установите это приложение.
Теперь выполните поиск Ubuntu в меню «Пуск» или в Cortana, чтобы запустить командную строку Linux Bash и использовать возможности SSH.
В настоящее время эта функция перенесена в Windows 10 с помощью Win32 Port самой Microsoft. В настоящее время доступно обновление для Windows 10 Fall Creators: 0.0.19.0 , но если вы зайдете в их репозиторий GitHub, вы обнаружите, что последняя версия – 0.0.24.0 , которая новее встроенного и, следовательно, будет гораздо более стабильным. Вы можете прочитать больше об установке через Powershell в их документации по GitHub, указанной выше.
Наконец, похоже, что Microsoft усиливает использование технологий с открытым исходным кодом, интегрируя их непосредственно в Windows 10 и улучшая их для разработчиков. Это делает утверждение Терри Майерсона (исполнительного вице-президента группы разработчиков Windows в Microsoft) верным, что
«Windows 10 – лучшая чертова девбокс на планете».
И мы не можем дождаться добавления более полезных функций, подобных этой, во встроенную Windows 10!
Использование встроенного 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 клиент установлен:
Get-WindowsCapability -Online | ? Name -like ‘OpenSSH.Client*’
В нашем примере клиент OpenSSH установлен (статус: State: Installed).
Если SSH клиент отсутствует (State: Not Present), его можно установить:
- С помощью команды PowerShell: Add-WindowsCapability -Online -Name OpenSSH.Client*
- С помощью DISM: dism /Online /Add-Capability /CapabilityName:OpenSSH.Client
0.0.1.0
]Бинарные файлы OpenSSH находятся в каталоге c:\windows\system32\OpenSSH\.
- ssh.exe – это исполняемый файл клиента SSH;
- scp.exe – утилита для копирования файлов в SSH сессии;
- ssh-keygen.exe – утилита для генерации ключей аутентификации;
- ssh-agent.exe – используется для управления ключами;
- ssh-add.exe – добавление ключа в базу ssh-агента.
Как использовать SSH клиенте в Windows 10?
Чтобы запустить SSH клиент, запустите командную строку PowerShell или cmd.exe . Выведите доступные параметры и синтаксис утилиты ssh.exe, набрав команду:
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, можно указать номер порта:
ssh username@host -p port
Например, чтобы подключиться к Linux хосту с IP адресом 192.168.1.202 под root, выполните:
При первом подключении появится запрос на добавление ключа хоста в доверенные, наберите yes -> Enter (при этом отпечаток ключа хоста добавляется в файл C:\Users\username\.ssh\known_hosts).
Затем появится запрос пароля указанной учетной записи, укажите пароль root, после чего должна открытся консоль удаленного Linux сервера (в моем примере на удаленном сервере установлен CentOS 8).
Если вы используете SSH аутентификацию по RSA ключам (см. пример с настройкой SSH аутентификации по ключам в Windows), вы можете указать путь к файлу с закрытым ключом в клиенте SSH так:
ssh root@192.168.1.92 -i «C:\Users\username\.ssh\id_rsa»
Также вы можете добавить ваш закрытый ключ в SSH-Agent. Сначала нужно включить службу ssh-agent и настроить ее автозапуск:
set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agent
Добавим ваш закрытый ключ в базу ssh-agent:
Теперь вы можете подключиться к серверу по SSH без указания пути к RSA ключу, он будет использоваться автоматически. Пароль для подключения не запрашивается (если только вы не защитили ваш RSA ключ отдельным паролем):
Еще несколько полезных аргументов SSH:
- -C – сжимать трафик между клиентом и сервером (полезно на медленных и нестабильных подключениях);
- -v – вывод подробной информации обо всех действия клиента ssh;
- -R / -L – можно использовать для проброса портов через 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 -r E:\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 без установки сторонних приложений и утилит.
powered by leo blog .
В данной статье я хотел бы рассмотреть продвинутые функции OpenSSH. Мы рассмотрим как теоретическую часть, так и практическую. Зачем.
На одном из моих серверов, в логах я заметил не очень позитивную активность, а именно китайцев, которые перебирали пароли, пытаясь авторизоваться под «админом», «рутом» и прочими логинами. Ок, я бы понял, если бы у меня был бы стандартный порт, но порт у меня был не стандартный, сервер вообще был в качестве тестовой среды и, короче, было странно, я заблокировал пол Китая и забил.
Далее меня откровенно стала надоедать необходимость постоянно вводить пароль для авторизации на серверах. Не, ну а если у меня двадцать серверов — нужно знать двадцать паролей, причем разных, потому что ставить один и тот же пароль на весь зоопарк глупо.
Авторизация по SSH ключу
Собственно в OpenSSH есть такая интересная возможность, как авторизация по ключам. Для корректной работы этого метода используется два ключа, открытый (который publik_key) и закрытый (privat_key соответственно). Открытый ключ должен находится в домашней каталоге пользователя, на сервере, на который мы будем заходить, а закрытый ключ должен обитать в домашнем каталоге пользователя, на ноутбуке (или ПК, смартфоне, телефоне, холодильнике, космическом шатле и т.д.) с которого мы будем ломиться на сервер. Далее, при авторизации, грубо говоря, эти ключи сравниваются, клиент авторизуется на сервер, сервер авторизуется у клиента, и клиент попадает на сервер. Само преимущество этого метода заключается в том, что его нельзя украсть, так как при авторизации ключ не передается на сервер, а только доказывает серверу, что у него есть этот ключ.
Ну если, username, мы смогли тебя убедить в том, что это необходимо, то начнем с генерации ключа. Заходим на наш сервер и генерируем ключ из под обычного пользователя (не root):
Далее в ответ «генератор» задаст нам несколько вопросов:
- Enter file in which to save the key (/home/wtf/.ssh/id_rsa) — или введите имя ключа, можно указав путь. Ну например введем maxidrom.net-rsa;
- Enter passphrase (empty for no passphrase): — или введите пароль для сертификата.. Ну я параноик, я ввел.. (Но вы можете оставить его пустым, если не хотите его вводить каждый раз, когда используете ключ)
- Enter same passphrase again: — и повторил.. (аналогично, если не вводили — оставьте пустым)
На этом вопросы заканчиваются, а ключи генерируются. Кстати, непонимающие «гуглочитатели» могут задать вопрос, почему я ввел ключ rsa, а не dsa? Все просто, dsa используется только для цифровой подписи, и не используется для шифрования. Так что смело вводите rsa.
В папке, в которой вы находитесь (или той,которую могли указать) вы найдете два файла, по названиям которых вы поймёте сто там публичное, а что там приватное.
Теперь, установим ключ на сервере:
и настроим openssh сервер, чтобы тот не просил логин и пароль, но мог авторизоваться по ключу. Для этого, уже под root пользователем или при помощи sudo, откроем файл конфигурации openssh любимым редактором:
приведем некоторые параметры к подобному виду:
и перезапустим службу openssh:
Но с сервера пока не выходите, особенно если он далеко от вас..
Теперь займемся настройками ноутбука, с которого вы будите ломиться на сервер.
Для этого скопируем файл закрытого ключа с сервера при помощи такой прекрасной утилиты, как scp:
и добавим ключ для своего ssh клиента:
Все, на это по идее можно закончить настройку авторизации, и авторизовываться на сервере можно таким образом:
Но мне это не особо удобно. Что я имею в виду? Например мы можем авторизовываться на сервер набрав в терминале
Для этого достаточно в файл
/.ssh/config добавить эти строки:
Это называется Алиасом. Подробно ознакомиться с ключами вы можете на OpenNet.ru или набрав команду man ssh_config.
И еще, если вы собираетесь заходить на серверы с операционной системы Windows при помощи Putty, то вам понадобится утилита PuttyGen.
Шифрованное копирование файлов
Да, что то я ранее упоминал про такую штуку, как scp. Это не то, что вы, возможно, прочли на лурке, а это протокол RCP копирования файлов, использующий в качестве транспорта не RSH, а SSH.
При помощи этого протокола вы сможете копировать файл site1.zip на сервер со своего компьютера, в папку
/my_sites вот такой командой:
Можно скопировать файл sites22.zip с сервера на свой ноутбук в папку sites вот такой командой:
При копировании директории важно указать ключ -r, как в этой команде:
А если, вдруг, ваш ssh работает на другом порту, то делаем копирование вот такой командой:
Ну а в нашем случае, при настроенном алиасе в файле
/.ssh/config, скопировать файл мы сможем такой командой:
Удобненько, не правда ли?
На этом, пожалуй, обзор команд я закончу. Этого много есть в интернете, но и пусть будет в моем блоге.
В написании этого шедевра мне помогли следующие ресурсы:
OpenSSH в среде Windows OpenSSH in Windows
OpenSSH представляет собой версию инструментов Secure Shell (SSH) с открытым кодом. Ее используют администраторы Linux и других систем, кроме Windows, для кроссплатформенного управления удаленными системами. OpenSSH is the open-source version of the Secure Shell (SSH) tools used by administrators of Linux and other non-Windows for cross-platform management of remote systems. Инструменты OpenSSH добавлены в Windows с осени 2018 г. Они входят в состав Windows 10 и Windows Server 2019. OpenSSH has been added to Windows as of autumn 2018, and is included in Windows 10 and Windows Server 2019.
Протокол SSH основан на архитектуре клиент-сервера, где клиентом считается система, на которой работает пользователь, а сервером — управляемая удаленная система. SSH is based on a client-server architecture where the system the user is working on is the client and the remote system being managed is the server. OpenSSH включает ряд компонентов и средств, позволяющих обеспечить безопасный и удобный метод удаленного администрирования системы, в том числе: OpenSSH includes a range of components and tools designed to provide a secure and straightforward approach to remote system administration, including:
- серверный компонент sshd.exe, который должен работать в удаленно управляемой системе; sshd.exe, which is the SSH server component that must be running on the system being managed remotely
- клиентский компонент ssh.exe, который работает в локальной системе пользователя; ssh.exe, which is the SSH client component that runs on the user’s local system
- ssh-keygen.exe для создания, администрирования и преобразования ключей проверки подлинности SSH; ssh-keygen.exe generates, manages and converts authentication keys for SSH
- ssh-agent.exe для хранения закрытых ключей, которые используются в процессах проверки подлинности с открытым ключом; ssh-agent.exe stores private keys used for public key authentication
- ssh-add.exe для добавления закрытых ключей в список ключей, разрешенных к использованию на сервере; ssh-add.exe adds private keys to the list allowed by the server
- ssh-keyscan.exe для быстрого получения открытых ключей SSH с нескольких узлов; ssh-keyscan.exe aids in collecting the public SSH host keys from a number of hosts
- служба sftp.exe реализует протокол передачи файлов SFTP (Secure File Transfer Protocol), который работает поверх SSH; sftp.exe is the service that provides the Secure File Transfer Protocol, and runs over SSH
- служебная программа scp.exe для копирования файлов, которая работает поверх SSH. scp.exe is a file copy utility that runs on SSH
Документация в этом разделе описывает использование OpenSSH в Windows, включая установку, настройку для среды Windows и сценарии использования. Documentation in this section focuses on how OpenSSH is used on Windows, including installation, and Windows-specific configuration and use cases. В ней рассматриваются следующие темы. Here are the topics:
Дополнительную подробную документацию по типичным функциям OpenSSH можно получить в Интернете по адресу OpenSSH.com. Additional detailed documentation for common OpenSSH features is available online at OpenSSH.com.
Главный репозиторий проекта OpenSSH с открытым исходным кодом управляется разработчиками проекта OpenBSD. The master OpenSSH open source project is managed by developers at the OpenBSD Project. Вилка Microsoft в этом проекте размещается на GitHub. The Microsoft fork of this project is in GitHub. Мы будем рады получить ваши отзывы об OpenSSH для Windows, которые вы можете оставить, создав на GitHub описание проблемы в репозитории для OpenSSH. Feedback on Windows OpenSSH is welcomed and can be provided by creating GitHub issues in our OpenSSH GitHub repo.