Windows эквивалент ssh - как подключиться к удаленной машине и получить доступ к командной строке?

Мне трудно придумать решение для расширения фреймворка, который был разработан для * nix машин на windows. В настоящее время платформа работает с одного сервера *nix и ssh на другие серверы *nix и выполняет множество различных команд, таких как проверка файлов журналов, синхронизация файлов из системы управления версиями, отправка журналов обратно в систему управления версиями и т. д. Большая часть, на которой я застрял, - это подключение к удаленным машинам windows и доступ к командной строке. Соединение может кроме того, он не должен запускаться с машины unix, он может переходить от windows к windows вместо unix к windows.

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

ssh ${user}@${server} "cd /app/app_name/logs; <export source control params>; <submit logs to source control>" >> Log.txt

кроме того, я предпочел бы не использовать сторонний инструмент (мой бюджет составляет около $0). Я проверил PsExec и еще несколько, но похоже, что вам нужен доступ администратора или нужно передать пользователей/передать в виде обычного текста.

13
задан Franklin Yu
10.03.2023 8:42 Количество просмотров материала 2877
Распечатать страницу

6 ответов

Использовать PowerShell Remoting С: https://msdn.microsoft.com/en-us/powershell/scripting/core-powershell/running-remote-commands

бессовестно скопировала:

Удаленное Взаимодействие Windows PowerShell

удаленное взаимодействие Windows PowerShell, использующее протокол WS-Management, позволяет запускать любые команды Windows PowerShell на одном или нескольких удаленных компьютерах. Он позволяет устанавливать постоянные соединения, запускать интерактивные сеансы 1: 1 и запуск сценариев на нескольких компьютерах. Чтобы использовать удаленное взаимодействие Windows PowerShell удаленный компьютер должен быть настроен на дистанционное управление. После настройки удаленного взаимодействия Windows PowerShell доступно множество стратегий удаленного взаимодействия. Остальная часть этого документа перечисляет только некоторые из них.

начать интерактивную сессию

для запуска интерактивного сеанса с одного удаленного компьютера используйте командлет Enter-PSSession. Например, для запуска интерактивный сеанс с удаленным компьютером server01, типа:

Enter-PSSession Server01

в командной строке отображается имя компьютера, к которому вы подключены. С этого момента все команды, вводимые в командной строке, запускаются на удаленном компьютере, а результаты отображаются на локальном компьютере.

чтобы завершить интерактивный сеанс, типа:

Exit-PSSession

выполнить удаленную команду

для запуска любой команды на одном или нескольких удаленных компьютеры, используйте командлет Invoke-Command. Например, чтобы выполнить команду Get-UICulture на удаленных компьютерах Server01 и Server02, введите:

invoke-command -computername Server01, Server02 {get-UICulture}

вывод возвращается на компьютер.

LCID    Name     DisplayName               PSComputerName
----    ----     -----------               --------------
1033    en-US    English (United States)   server01.corp.fabrikam.com
1033    en-US    English (United States)   server02.corp.fabrikam.com

выполнить скрипт

чтобы запустить сценарий на одном или нескольких удаленных компьютерах, используйте параметр FilePath командлета Invoke-Command. Сценарий должен быть включен или доступен на локальном компьютере. Результаты возвращаются в локальную компьютер.

например, следующая команда запускает DiskCollect.сценарий ps1 на удаленных компьютерах Server01 и Server02.

invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1

установить постоянное соединение

чтобы выполнить ряд связанных команд, совместно использующих данные, создайте сеанс на удаленном компьютере, а затем используйте командлет Invoke-Command для выполнения команд в созданном сеансе. Чтобы создать удаленный сеанс, используйте командлет New-PSSession.

для например, следующая команда создает удаленный сеанс на компьютере Server01 и другой удаленный сеанс на компьютере Server02. Он сохраняет объекты сеанса в переменной $s.

$s = new-pssession -computername Server01, Server02

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

например, следующая команда выполняет команду Get-Hotfix в сеансах в переменной $s и сохраняет результаты в переменной $h. Переменная $h создается в каждом сеансе в $s, но не существует в локальном сеансе.

invoke-command -session $s {$h = get-hotfix}

теперь вы можете использовать данные переменной $h в последующих командах, например, в следующей. Результаты отображаются на локальном компьютере.

invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"} }
12
отвечен Shanteva 2023-03-11 16:30

Try tunnellier от Bitvise. Это клиент ssh. Там же ssh сервер для подключения к машине windows. Эти два позволяют создавать очень безопасные соединения наряду с более продвинутыми вещами, такими как веб-прокси или туннелирование портов.

4
отвечен 2023-03-11 18:47

установить порт OpenSSH для Windows-это бесплатно и предоставляет как клиент, так и сервер.

4
отвечен Eugene Mayevski 'Allied Bits 2023-03-11 21:04

можно попробовать psexec, который дает вам удаленную оболочку через файловый ресурс (или как это называется). Существует также winexe Если вы хотите использовать Linux в качестве клиента.

2
отвечен Julian 2023-03-11 23:21

мне очень нравится идея PowerShell, хотя настройка может занять несколько минут на сервере и клиенте.

помимо полного ответа Шантевой, который предполагает использование PowerShell, вы также должны взглянуть на здесь на веб-сайте howtogeek о том, как на самом деле включить (и разрешить) удаленное подключение к серверу PowerShell. На компьютере сервера требуется небольшая настройка.

две важные вещи, которые нужно делать: (Я не должен упоминать, что вы должны сделать каждую конфигурацию' как администратор ' правильно? Просто откройте PowerShell / cmd 'от имени администратора')

  • во-первых, включите службу WINRM (приложение windows, которое обрабатывает удаленные команды) на SERVER.

на сервере откройте PowerShell и запустите:

Enable-PSRemoting -Force

есть и другой способ сделать это. Можно открыть командную строку и run:

winrm -quickconfig

там может быть гораздо больше конфигурации для изменения. Сейчас в этом нет необходимости.

  • во-вторых, следует отметить, что клиент и сервер всегда пытаются аутентифицировать друг друга. Сервер хочет убедиться, что клиент действительно имеет разрешенный доступ к серверу или нет. Для этого вы собираетесь предоставить некоторую информацию аутентификации на сервер (подобно SSH, вы, возможно, предоставление имя пользователя/пароль). И наоборот, клиент хочет убедитесь, что сервер является доверенным. Можно использовать различные схемы, например, доверять серверу, который предоставляет смарт-публичный сертификат или доверять на основе IP-адреса или, может быть, просто доверять всем!! Опять же, у нас есть та же процедура на SSH, где сервер может предоставить некоторую информацию аутентификации. (Давайте просто забудем детали SSH на данный момент.)

если оба компьютера находятся в одном домене (группа компьютеров, которым назначены разные правила и роли в) процедура кажется простой (я не пробовала).

но, как вы, вероятно, хотите получить доступ к серверу через Интернет (технически называется глобальной сети), есть некоторые осложнения, и вы должны изменить некоторые настройки, чтобы разрешить подключение к удаленному серверу. На CLIENT компьютер включить службу WINRM. Процедура очень похожа на то, что мы сделали для сервера. Просто запустите команда:

Enable-PSRemoting -Force

(опять же примечательно! Некоторые ссылки говорят, что клиентский компьютер и серверный компьютер должны быть в "частных" сетях, или все это не будет работать. Я получаю сообщения об ошибках для этого, когда я выполните вышеуказанную команду, но все работает. Я не уверен в этом факте. Проверьте вышеупомянутую веб-страницу.)

затем запустить на CLIENT компьютер в PowerShell:

Set-Item wsman:\localhost\client\trustedhosts *

что означает, что клиент будет доверять всем серверам (хостам). Наконец, запустите это (на CLIENT еще раз подчеркиваю):

Restart-Service WinRM

вы готовы пойти. Проверить остаток ответа Shanteva по. На клиентском компьютере выполните, например:

Enter-PSSession -ComputerName 12.34.56.78 -Credential Administrator

он запросит пароль, и откроется удаленная консоль, которая выглядит так:

[12.34.56.78]: PS C:\Users\Administrator\Documents>

затем просто введите команды, как для SSH.

1
отвечен Ali Nakisaee 2023-03-12 01:38

шпаклевка также является популярным клиентом Windows SSH.

-2
отвечен Chris Becke 2023-03-12 03:55

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх