Меню Рубрики

How connect to powershell from ssh linux

How connect to powershell from ssh linux

Функция удаленного взаимодействия 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:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Проблемы OMID SSL

На одной из тестовых машин, во время подключения стало возникать сообщение о том, что срок действия сертификата истек, решение — перейти в каталог:

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

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

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

Сценарий 2

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

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

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

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

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

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

На стороне Linux

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

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

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

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

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

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

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

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

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

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

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

Источник

Модуль Posh-SSH простой доступ к SSH и SCP из PowerShell

для powershell есть модуль Posh-SSH реализующий поддержку протоколов SSH, SFTP, SCP в PowerShell. Здесь описывается как установить, и базовые заметки по работе. По сути это выжимка из англоязычной статьи приведенной ниже.

по определенному событию понадобилось сбрасывать сетевой порт на коммутаторе. Коммутатор имеет command line интерфейс cisco. Перед тем как использовать из командной строки putty было решено посмотреть существуют ли модули для работы по ssh напрямую из powershell. Поиски дали модуль Posh-SSH на github.

  • устанавливать сессии SSH и SFTP по кредиталам или используя OpenSSH ключ
  • подключаться через SOCKS и HTTP прокси для обоих видов SSH и SFTP сессий
  • исполнять команды по одиночке посылая их в SSH
  • загружать и скачивать файлы использую SCP и SFTP протоколы

Для SSH поддерживается аутентификация по ключу, логину\паролю, ввод с клавиатуры. Поддерживаются разные алгоритмы шифрования, поддерживаются прокси

Установка модуля

Простейший способ установки из админской консоли запустить команду:

Если у вас стоит PowerShell 5:

Просмотреть команды в модуле можно так:

Как работать с SSH

1. Сначала создаем SSH сессию:

При первом подключении модуль спросит добавить ли удаленный хост в список доверенных. Можно сделать один раз запуск New-SSHSession из консоли и нажать Y. В последующем подключаться будет без вопросов.

Для просмотра и удаления доверенных хостов используются командлеты

  • Get-SSHTrustedHost
  • Get-SSHSession
  • Remove-SSHSession

Все, теперь можно посылать команды и считывать ответ:

3. Завершение работы:

Просмотреть сессии можно командой Get-SSHSession.

Ниже пример работы:

  • подключаемся по SSH
  • переходим в enable режим
  • переходим в режим конфигурации интерфейса
  • ресетим интерфейс

Передача файлов по SCP

Тут все еще проще. привожу пример с официальной страницы. Закачка файла:

Источник

Using SSH with PowerShell

Microsoft announced that they will support SSH using PowerShell in Windows 10. Until now Microsoft has a good solution for this, there is a third party solutions called Posh-SSH. To use SSH in PowerShell you first have to install the Posh-SSH PowerShell Module from the PowerShell Gallery. Make sure you are running Windows 10 or you have the Windows Management Framework 5 installed.

If you want to use SSH with PowerShell 6, you read my blog here: Using SSH with PowerShell 6

You can now find the Posh-SSH Module and install it:

You now have several PowerShell SSH cmdlets available:

Now you can create a new SSH Session using the following cmdlet (Password based authentication)

You can now simply run commands against this session or use SCP to copy files.

I hope this helps you using SSH with PowerShell. If you have any questions, please write it in the comments. Also check out my other blogs and see how SSH is integrated in Windows 10.

Related

25 Responses to Using SSH with PowerShell

Nice, very helpful. Now the questions is how can I user to connect to a windows server using ssh?

The real question is when will this support Kerberos authentication?

Does this also works with com ports?
I know I can use putty.
But I want to use this.
Because PowerShell.

To be honest, I haven’t tried it with com ports 😉

Can connect using buty bash.exe but not the module

New-SSHSession : A non-recoverable error occurred during a database lookup
At line:12 char:1
+ New-SSHSession -ComputerName $ipaddress -Credential $psCred
+

+ CategoryInfo : InvalidOperation: (Renci.SshNet.SshClient:SshClient) [New-SSHSession], SocketException
+ FullyQualifiedErrorId : SSH.NewSshSession

what if my pc is only windows 7. who can i use SSH in powershell

You can use this same guide but you just need to make sure you have PowerShell v5 installed on your Windows 7 PC

great. really nice.
how to exec. .bash scripts

shahrzad, did you install bash in windows yet? After you do that, you have full access to running any linux command.
https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/

question
exist a way to implement like
New-SSHSession -ComputerName “soaad1-q” -Credential ( user username password passwd )

This so called powershell must be the biggest joke in computer history. It has no, nada,zip, nil resemblance with a real shell.

Powershell is Awesome, If you don’t know how to use it. get-help

Linux subsystem on Windows so that you can run Linux commands and programs on Windows. It’s like building a mansion on a cliff. Eventually it’s going to fall because the cliff is unstable.
It is also not every command from Linux. The implementation is still limited for both commands and apps. In fact most apps will not run in this as there is still a substantial difference for how a true Linux OS performs compared to what this truly offers. Lots of hype here.
Even Jack Hammons at MS has written that this subsystem was geared towards bash and cmd line tools and that it doesn’t even support any desktops or apps. In fact, if an app does run, it’s largely because their required libraries were ported to Windows as well. In many cases, this has not happened. In the end, you are still stuck with the inherent limitations of Windows for this lipstick on a pig.
IF MS wants to do something good, create a gui for Linux or pull an apple, dump your core and port your ui to Linux. Lindows/Winux may actually be something that I’d consider from MS.

Back to the original item here of the article. You fail to mention the need for installation of and access for additional tools like nuget which is required with these steps. Nuget if you(the reader) don’t know is the package manager for MS’s developer tools and do you really want that on a potentially production server?! That to me just screams one more way for a Windows server to be hacked.
Yes PowerShell in general is pretty good if you are running Windows. But given the choice, and considering the impending explosion of PowerShell based malware, I’ll still stick to *nix and native shells there.

Why is it not install on my Windows 10 PC? It is a Windows 10 home 64bit.

Can this be used to build a tunnel instead of using
plink -R :127.0.0.1:80 @subdomain.domain.com -i private_ssh.ppk

I haven’t tried it with the PowerShell Module. But with WSL (Windows Subsystem for Linux) it works:

For PowerShell version 2 compatibility, you can install the 1.9 or earlier versions of https://www.powershelladmin.com/wiki/SSH_from_PowerShell_using_the_SSH.NET_library “SSH-Sessions” or “SSHSessions” (someone stole the name on powershellgallery). It’s here in the PowerShell gallery: https://www.powershellgallery.com/packages/SSHSessions/2.1.3 – it is also quite a bit less “bloat” than Posh-SSH. Two weeks ago I was at spot two on google for “powershell ssh module” with the PS gallery link, but now I’m relegated to just about nowhere, so I’ll post here for self promotion (rarely hurts). https://www.powershellgallery.com/packages/SSHSessions/

Or you could always turn to the light-weight alternative: SSH-Sessions/SSHSessions, written by yours truly.
Link is here: https://www.powershelladmin.com/wiki/SSH_from_PowerShell_using_the_SSH.NET_library
And PowerShell Gallery link is here (the last PSv2-compatible version in old style is -RequiredVersion 1.9): https://www.powershellgallery.com/packages/SSHSessions/ – GitHub here: https://github.com/EliteLoser/SSHSessions – Thanks.

Can I use keys instead of using credentials?

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Mac os high sierra при проверке прошивки произошла ошибка
  • Mac os high sierra поддерживаемые устройства
  • Mac os high sierra поддерживаемые модели
  • Mac os high sierra обои imac
  • Mac os high sierra обзор