Как подключиться по ssh из windows powershell

Обновлено: 04.07.2024

Начиная с Windows 10, теперь есть встроенный SSH-клиент Windows, который не устанавливается по умолчанию, но его можно добавить как дополнительное через меню настроек.

SSH для защищенной оболочки - это зашифрованный протокол связи для обмена информацией между клиентом и сервером, таким как сервер домена CPanel.

Доступ к большинству веб-серверов должен осуществляться с использованием этого протокола для многих операций, включая системные операции, такие как создание символических ссылок, например, на вашем лучшем дешевом сервере веб-хостинга, и выполнение всех видов операций, которые помогут вам зарабатывать деньги в Интернете или, по крайней мере, управлять сетью. хостинг лучше.

Обычно рекомендуется использовать протокол SSH через безопасное соединение VPN, чтобы гарантировать, что никакая информация не может быть украдена в пути.

Ниже приведено полное руководство по установке и использованию оболочки SSH для Windows.

Найти Win SSH клиент и сервер в Windows 10

Как клиент SSH для Windows 10, так и сервер SSH для Windows 10 находятся в одном месте в настройках Windows.

Начните с открытия приложения настроек, к которому можно получить доступ через опцию поиска Windows в строке меню Windows.

В настройках Windows откройте плитку «Приложения», которая позволит найти, установить и удалить значения по умолчанию и дополнительные функции в вашей установке Windows 10.

В меню «Приложения и функции» найдите ссылку на дополнительные функции.

SSH клиент и сервер в Windows 10 дополнительные функции

Теперь в дополнительных функциях клиент Windows SSH, скорее всего, не будет виден в основном списке приложений.

Из списка добавленных возможностей функции прокрутите вниз, пока не увидите клиент OpenSSH, это встроенный клиент Windows SSH, который мы хотим установить.

В этом же окне вы также можете найти серверное приложение OpenSSH, если вам это нужно.

Использование оболочки SSH для Windows 10

Теперь, когда SSH-клиент Windows установлен в Windows 10, его можно найти в меню поиска и запуска приложений Windows 10, выполнив поиск приложения «Windows PowerShell».

Найдите его в списке приложений Windows 10 или в панели быстрого запуска и запустите его.

Вот и все! Из Windows PowerShell вы можете запускать сеанс SSH и подключение к вашему SSH-серверу, как обычно, без необходимости устанавливать какие-либо дополнительные приложения или программы, а только с использованием встроенного Windows-клиента SSH.

Теперь вы можете использовать командную строку SSH из Windows PowherShell или из программы Windows CMD SSH, и те и другие теперь имеют тот же эффект, что и установленный клиент Windows SSH.

Не забудьте запустить их от имени администратора в случае использования расширенных опций.

Вывод из установки Windows SSH-клиента

Довольно удобно использовать встроенное приложение Windows 10 для использования возможностей клиента SSH прямо из Windows 10 без необходимости загружать и устанавливать внешние программы.

Вы использовали Windows PowerShell, у вас возникли какие-либо проблемы с ним? Удалось ли вам подключиться через SSH к вашему любимому лучшему дешевому веб-хостингу, вы использовали VPN-подключение? Дайте нам знать в комментариях.

Как вставить в Windows SSH-клиент?

Если вы не можете вставить в Windows SSH-клиент некоторые данные, вставленные из другого места, прежде всего убедитесь, что вы не находитесь в строке ввода пароля, так как вы не сможете вставить текст в скрытое поле, например пароль. поле ввода данных.

В противном случае его можно добавить, просто щелкнув правой кнопкой мыши в окнах Windows SSH после копирования некоторого текста в буфер обмена, или используя редактирование меню и обнаружив параметр вставки, который может быть неактивным, если курсор в данный момент находится на поле ввода данных, которое не позволяет вставлять текст.

Функция удаленного взаимодействия PowerShell обычно использует WinRM для согласования соединения и передачи данных. Теперь протокол SSH доступен на платформах Linux и Windows, что позволяет осуществлять многоплатформенное удаленное взаимодействие с PowerShell.

Служба удаленного управления Windows обеспечивает надежную модель поддержки удаленных сеансов PowerShell. Удаленное взаимодействие по протоколу SSH сейчас не поддерживает настройку удаленных конечных точек и функцию JEA (Just Enough Administration).

Удаленное взаимодействие по SSH позволяет осуществлять базовое удаленное взаимодействие между компьютерами с Windows и Linux в рамках сеансов PowerShell. Функция удаленного взаимодействия по SSH создает хост-процесс PowerShell на целевом компьютере в качестве подсистемы SSH. Со временем для поддержки настройки удаленных конечных точек и функции JEA мы реализуем общую модель размещения, похожую на службе удаленного управления Windows.

Командлеты New-PSSession , Enter-PSSession и Invoke-Command теперь имеют набор новых параметров для поддержки этой возможности удаленного взаимодействия.

Чтобы создать удаленный сеанс, укажите целевой компьютер с помощью параметра HostName и имя пользователя с помощью параметра UserName. При интерактивном выполнении командлетов отображается запрос на ввод пароля. Вы также можете использовать проверку подлинности ключа SSH с помощью файла закрытого ключа с параметром KeyFilePath. Способ создания ключей для проверки подлинности по протоколу SSH зависит от платформы.

Общие сведения об установке

PowerShell 6 или более поздней версии, и на всех компьютерах должен быть установлен SSH. Установите клиент ( ssh.exe ) и сервер ( sshd.exe ) SSH, чтобы осуществлять удаленное взаимодействие между компьютерами. Решение OpenSSH для Windows теперь доступно в Windows 10 сборки 1809 и Windows Server 2019. Дополнительные сведения см. в статье Управление Windows через OpenSSH. В Linux нужно реализовать поддержку SSH (включая установку сервера sshd) в соответствии с используемой платформой. Также для поддержки удаленного взаимодействия по SSH нужно установить PowerShell с сайта GitHub. Для сервера SSH нужно настроить возможность создать подсистему SSH для размещения процесса PowerShell на удаленном компьютере. Также нужно активировать проверку подлинности на основе пароля или ключа.

Настройка на компьютере с Windows

Установите последнюю версию PowerShell. Дополнительные сведения см. в статье Установка PowerShell Core в Windows.

Чтобы убедиться, что в PowerShell есть поддержка удаленного взаимодействия SSH, перечислите наборы параметров New-PSSession . Обратите внимание на наличие имен наборов параметров, начинающихся с SSH. К этим наборам параметров относятся параметры SSH.

Установите последнюю версию Win32 OpenSSH. Инструкции по установке см. в разделе Начало работы с OpenSSH.

Если вы хотите задать PowerShell в качестве оболочки по умолчанию для OpenSSH, см. раздел Настройка Windows для OpenSSH.

Измените файл sshd_config , расположенный в $env:ProgramData\ssh .

Включите проверку подлинности с помощью пароля:

Создайте подсистему SSH, в которой размещается процесс PowerShell на удаленном компьютере:

Расположение исполняемого файла PowerShell по умолчанию — c:/progra

1/powershell/7/pwsh.exe . Расположение может различаться в зависимости от способа установки PowerShell.

Необходимо использовать краткое имя 8.3 для всех путей к файлам, содержащим пробелы. В OpenSSH для Windows обнаружена ошибка, блокирующая работу пробелов в путях к исполняемым файлам подсистемы. См. дополнительные сведения на сайте GitHub.

Обычно краткое имя 8.3 для папки Program Files в Windows — это Progra

1 . Тем не менее для проверки можно использовать следующую команду:

При необходимости включите проверку подлинности на основе ключа:

Дополнительные сведения см. в статье Управление ключами OpenSSH.

Перезапустите службу sshd.

Добавьте путь установки OpenSSH в свою переменную среды Path. Например, C:\Program Files\OpenSSH\ . Это позволит найти файл ssh.exe .

Настройка на компьютере с Ubuntu 16.04 Linux

Установите последнюю версию PowerShell, см. раздел Установка PowerShell Core в Linux.

Измените файл sshd_config в расположении /etc/ssh .

Включите проверку подлинности с помощью пароля:

При необходимости включите проверку подлинности на основе ключа:

Дополнительные сведения о создании ключей SSH в Ubuntu см. на странице справки по ssh-keygen.

Добавьте запись подсистемы PowerShell:

Расположение исполняемого файла PowerShell по умолчанию — /usr/bin/pwsh . Расположение может различаться в зависимости от способа установки PowerShell.

Перезапустите службу ssh.

Настройка на компьютере с macOS

Установите последнюю версию PowerShell. Дополнительные сведения см. в статье Установка PowerShell Core в macOS.

Убедитесь, что удаленное взаимодействие SSH включено, выполните следующие действия:

  1. Откройте среду System Preferences .
  2. Щелкните Sharing .
  3. Установите флажок Remote Login , чтобы задать Remote Login: On .
  4. Разрешите доступ соответствующим пользователям.

Измените файл sshd_config в расположении /private/etc/ssh/sshd_config .

Используйте текстовый редактор, например nano:

Включите проверку подлинности с помощью пароля:

Добавьте запись подсистемы PowerShell:

Расположение исполняемого файла PowerShell по умолчанию — /usr/local/bin/pwsh . Расположение может различаться в зависимости от способа установки PowerShell.

При необходимости включите проверку подлинности на основе ключа:

Перезапустите службу sshd.

Аутентификация

При удаленном взаимодействии с PowerShell через SSH используется обмен данными для проверки подлинности между клиентом SSH и службой SSH. Схемы проверки подлинности в его рамках не реализуются. Это означает, что любые настроенные схемы проверки подлинности, включая многофакторную проверку подлинности, обрабатываются протоколом SSH независимо от PowerShell. Например, в службе SSH можно настроить обязательное применение проверки подлинности на основе открытых ключей, а также разовых паролей для усиления безопасности. Настройка многофакторной проверки подлинности выходит за рамки настоящего документа. Сведения о том, как правильно настроить многофакторную проверку подлинности и проверить ее работу вне PowerShell, прежде чем пытаться использовать ее для удаленного взаимодействия с PowerShell, см. в документации по SSH.

Пользователи сохраняют те же привилегии в удаленных сеансах. Это означает, что администраторы имеют доступ к оболочке с повышенными правами, а обычные пользователи — нет.

Пример удаленного взаимодействия PowerShell

Проще всего проверить удаленное взаимодействие на одном компьютере. В этом примере мы создадим удаленный сеанс с одним и тем же компьютером Linux. Командлеты PowerShell мы выполняем в интерактивном режиме, поэтому мы увидим запрос от SSH на проверку удаленного компьютера, а также запрос на ввод пароля. Чтобы убедиться, что удаленное взаимодействие работает, те же операции можно выполнить на компьютере Windows. Затем установите удаленное подключение между компьютерами, изменив имя узла.

Ограничения

Команда sudo не работает в рамках сеанса удаленного взаимодействия с компьютером Linux.

PSRemoting через SSH не поддерживает профили и не имеет доступа к $PROFILE . После входа в сеанс можно загрузить профиль с помощью вызова с точкой, указав полный путь к профилю. Это не связано с профилями SSH. Вы можете настроить SSH-сервер для использования PowerShell в качестве оболочки по умолчанию и для загрузки профиля через SSH. Дополнительные сведения см. в документации по SSH.

До PowerShell 7.1 удаленное взаимодействие по SSH не поддерживало удаленные сеансы со вторым прыжком. Эта возможность была ограничена сеансами через WinRM. PowerShell 7.1 позволяет Enter-PSSession и Enter-PSHostProcess работать в любом интерактивном удаленном сеансе.

Функция удаленного взаимодействия PowerShell обычно использует WinRM для передачи данных. Теперь протокол SSH доступен на платформах Linux и Windows, что позволяет осуществлять многоплатформенное удаленное взаимодействие с PowerShell. Начиная с PowerShell 6 и выше можно работать по WinRM между Windows и Linux машинами, так-же можно работать непосредственно по SSH, при условии, что на Windows машине установлен SSH клиент.

На сегодня PS доступен в 7-ой версии для Windows, Linux, macOS платформ, последние версии доступны на официальной странице PowerShell в GitHub. Сегодня рассмотрим несколько сценариев работы / подключения к Linux из PowerShell Windows, участники эксперимента:

  • Windows Server 2016
  • CentOS 7 + PSRP (WinRM)
  • Ubuntu 18 (SSH)
  • PowerShell (последний релиз, на сегодня 7.0.0)

Сценарии подключения

  1. Использование PSRP (WinRM)
  2. Использование SSH клиента из Powershell (более лаконочиный и предпочитаемый сценарий)

Небольшое предисловие - это ознакомительная статья, использование PS на Linux проде, это хороший вопрос, который требуется хорошо обдумать, прежде, чем использовать. По ходу статьи будут приведены ссылки на те или иные материалы / аббревиатуры, так что будем считать, что вводная на используемые технологии дана в той или иной мере.

Сценарий 1

Использование OMI сервера, работа по WinRM (PSRP) (детали ниже).

Установка последней версии PowerShell в Windows

Устанавливается одной командой:

После установки запускается командой (Ctrl +R):

Смотрим детали по установленному релизу PS:

ps linux ssh win

Установка PowerShell в Linux

Устанавливается досточно просто, необходимо скопировать MS репо-конфиг из официального репозитория:

ps linux ssh lin

Установка PSRP в CentOS

Что такое PSRP - PowerShell Remoting Protocol который используется в Открытой Инфраструктуре Управления (Open Management Infrastructure (OMI))

В данном случае достаточно будет установить в наш CentOS - PSRP Server. Rpm пакет можно загрузить из официльного репозитория PSRP, в моем случае на момент написание статьи этот вариант так-же работоспособен:

После установки в системе появляется и запускается новый system unit - omid:

Появляется новый листенер на порту 5986 (кто не знает, это WinRM):

ps linux ssh netstat

В моем случае используется IPv4 (по умолчанию OMI сервер использует IPv6, если он включен. На всякий случай - как отключить IPv6 в CentOS)

Разрешаем порт в firewalld:

Подключение PowerShell SSH (Windows > Linux)

Создаем объект для хранения SSH кред:

Объект с параметрами подключения:

Подключаемся к Linux машине:

ps linux ssh 1

Пример удаленного вызова команды

Здесь подразумеваю Invoke-Command:

ps linux ssh invoke

ps linux ssh invoke drive2

Удаленный запуск скриптов

На стороне Windows можно создать скрипт и исполнить его на удаленной Linux машине, например PS скрипт, который отображает информацию о сетевых интерфейсах:

Далее можно вызвать этот скрипт используя Invoke-Command:

ps linux ssh invoke script

Проблемы OMID SSL

Создаем резервные копии, того, что есть:

В конфиг ssl.conf добавляем следующие параметры:

Генерируем SSL сертификаты:

Сценарий 2

Лаконичный, работоспособный сценарий для работы PowerShell через SSH клиента. Нет лишних телодвижений, единственное, после установки PowerShell в Linux необходимо будет добавить один параметр в sshd конфиг.

Установка Windows SSH клиента

В этом сценарии будет использоваться менеджер пакетов Chocolately, установить его можно следующим образом:

Далее необходимо произвести несколько настроек:

Установить SSH клиент:

Обновить переменные окружения:

На стороне Linux

В данном случае, для разнообразия используется Ubuntu, здесь так-же необходимо установить PowerShell:

Детали по установке для различных дистрбутивов смотри на официальном сайте.

Подключение по SSH

На стороне Windows используя командлет Enter-PSSession тестируем подключение:

ps linux ssh ubuntu

Или можно создать сессию подключения:

Далее использовать ее по назначению:

Или вызвать команду:

ps linux ssh ubuntu 2

Устранение ошибки A remote session might have ended.

Возникает в момент подключения, выглядит следующим образом:

Решается добавлением в ручную переменной окружения ssh:

ps linux ssh env

Использование SSH клиента из командной строки

Использование ssh клиента, можно использовать из командной строки в рамках обычного ssh подключения:

В данной статье рассмотрим возможности использования SSH между Windows и Linux компьютерами, а также использовании PowerShell через SSH в кроссплатформенной среде.

Выполенине удаленных команд PowerShell и SSH

Устанавливаем OpenSSH на Windows

Начиная с Windows 10 1709 все очень просто. Нужно просто открыть приложение настроек. Далее выбираем приложения-> управление дополнительными компонентами-> сервер openssh и устанавливаем его. Или выполнить команду powershell

Get-WindowsCapability -Online | ? name -like * ssh * | Add-WindowsCapability -Online

Эта же команда подойдет для Windows Server 1709.

Далее запускаем службу OpenSSH

Настраиваем SSH

В общем-то теперь можно пользоваться ssh.

С компьютера на ubuntu или windows запускаем

Где username имя пользователя, а ip – IP адрес компьютера которым вы желаете управлять. Далее необходимо ввести пароль пользователя, обратите внимание если вы используете учетную запись Microsoft необходимо указать имя пользователя локального, а пароль уже от учетной записи Microsoft. У меня возникли сложности с вводом паролей с русскими символами.

Если не хочется использовать парольную идентификацию при подключении к Windows компьютеру можно использовать идентификацию по ключу, для этого на ubuntu запускаем

После чего необходимо скопировать содержимое файла

/.ssh/id_rsa.pub с ubuntu в файл c:\users\пользователь\.ssh\authorized_keys на windows. Придется это сделать вручную, т.к. ssh-copy-id не отрабатывает корректно для windows машины. В результате мы можем запускать

и система не будет требовать пароль.

Кстати, если надо подключаться к Linux машине без пароля, то тогда запускаем ssh-keygen на Windows машине и копируем содержимое c:\users\пользователь\.ssh\id_rsa.pub в

Настраиваем подключение не к cmd, а к powershell

По умолчанию OpenSSH будет подключать нас к cmd, безусловно мы можем запустить команду

Однако это не всегда удобно и не то, к чему мы стремимся.

Для того чтобы при подключении по SSH мы автоматически попадали в PowerShell можно изменить значение ключа реестра Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH\DefaultShell на путь к исполняемому файлу PowerShell. Это будет выглядеть примерно так:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

Если кто-то знает как это же сделать для Linux, напишите в комментариях.

Взаимодействие PowerShell и SSH


Мануал Во многих случаях для управления серверами Linux вам может понадобиться разрешить удаленный доступ, и это можно сделать через Secure Shell (SSH). Так как много лет назад системы Linux могли использовать собственный терминал для использования SSH, а в свою очередб это не относится к системам Windows, которые требуют установки некоторых инструментов.
Системы Windows претерпели много улучшений, поэтому вам не нужно устанавливать инструмент, но вы можете использовать доступные средства. В этом уроке мы узнаем, как подключить Linux-машину из Windows с помощью встроенных инструментов.

Что нужно знать о SSH

Соединение работает в режиме клиент-сервер, поэтому соединение устанавливается клиентом SSH, подключающимся к серверу SSH.

SSH предлагает несколько вариантов аутентификации пользователя, и наиболее распространенными являются пароли и методы аутентификации с открытым ключом:

  • Пароль: SSH работает как обычный процесс для локального компьютера, что означает, что вам нужно иметь имя пользователя и пароль существующей учетной записи на сервере.
  • Открытый ключ: принцип состоит в том, чтобы иметь пару открытый ключ криптографического ключа и закрытый ключ, где открытый ключ сконфигурирован на сервере, чтобы разрешить доступ и предоставить любому, у кого есть копия закрытого ключа, доступ к серверу.

1) Установить функцию OpenSSH в Windows 10 клиенте

Компьютеры с Windows теперь позволяют вам использовать собственные инструменты для установки SSH-соединения, но сначала вам нужно убедиться, что установлена функция Openssh Windows Client.

Обычно он не устанавливается по умолчанию, поэтому сначала вам нужно будет это сделать

Зайдите в Windows -> Settings -> Apps -> Manage optional feature


Нажмите Add a feature

Выберите OpenSSH Client и установите

2) Соединение SSh с Windows Powershell и командной строкой

Теперь вы можете использовать командную строку или Windows PowerShell для доступа к вашему Linux-серверу через ssh.

а) SSh из Windows Powershell

Собственный инструмент Windows Powershell позволяет удаленно подключаться к серверу через ssh.

Вы просто должны открыть его с Windows + R, а затем нажмите клавишу A

Теперь введите команду ssh для подключения к удаленному серверу Linux: ssh root@hostname-or-ip-address


б) SSH из командной строкой

Чтобы удаленно получить доступ к вашему серверу с помощью команды, вам просто нужно запустить его с помощью комбинации клавиш Windows + r и затем ввести cmd

Теперь в командной строке вы можете использовать команду ssh, как в случае с powershell


Теперь вы знаете, как можно подключиться к удаленному серверу Linux с помощью SSH с помощью встроенных в Windows инструментов.

Вы также можете использовать инструмент putty, но теперь проще и удобнее использовать инструменты, предлагаемые по умолчанию.

Читайте также: