Добавить в корзинуПозвонить
Найти в Дзене
IT-Прогулка

Как внутри Powershell скрипта вызвать команды linux с использованием SSH

Имеется виртуальная машина на CentOS 8, к которой мы можем подключиться через putty. Необходимо выполнить пару команд через Powershell. Это будет полезно если в рамках общего скрипта на Powershell, требуется дать несколько команд Linux-серверам или менеджмент модулям оборудования через SSH. Настроим подключение к Linux хосту, без пароля, с использование публичного ключа. В скрипте будет удобно и безопасно использовать ключ вместо пароля. В случае если с ключом проблема, появится строка запроса пароля и можно будет подключиться по паролю. 1) Для генерации ключа понадобиться утилита puttygen.exe, она входит в состав Putty, ее можно скачать на офф. сайте по ссылке 2) Запустить установку, оставить все по умолчанию 3) Запустить puttygen.exe из C:\Program Files\PuTTY 4) Нажать на кнопку Generate и подвигать мышкой Перенос ключа на ssh-сервер (linux хост, которым мы будем управлять) 1) Подключиться к машине с linux по ssh c паролем, под пользователем, который будет использоваться для входа
Оглавление

Имеется виртуальная машина на CentOS 8, к которой мы можем подключиться через putty.

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

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

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

1) Для генерации ключа понадобиться утилита puttygen.exe, она входит в состав Putty, ее можно скачать на офф. сайте по ссылке

-2

2) Запустить установку, оставить все по умолчанию

-3

3) Запустить puttygen.exe из C:\Program Files\PuTTY

4) Нажать на кнопку Generate и подвигать мышкой

Перенос ключа на ssh-сервер (linux хост, которым мы будем управлять)

1) Подключиться к машине с linux по ssh c паролем, под пользователем, который будет использоваться для входа по ключу

2) В putty, после подключения оказываемся в домашней папке. Ввести команды:

mkdir .ssh
touch .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

После создания файла записать в него публичный ключ. Для этого

Публичный ключ скопировать в буфер обмена.

-4

3) В putty ввести

cat > .ssh/authorized_keys

4) вставить содержимое буфера обмена и закрыть терминал дважды нажав CTRL+D

Сохранение приватного ключа на клиенте.

Для использования с putty(необязательно):

1) сохранить ключ, нажав File -> Save Private key, назвать файл, например, sb-ssh01.ppk

2) в настройках подключения putty указать расположение файла sb-ssh01.ppk

-5

Для использования в скрипте:

1) экспортировать приватный ключ Conversions -> Export OpenSSH Key , назвать файл, например, sb-ssh01-openssh

2) перенести файл в папку со скриптом, например, в C:\1\

Создание скрипта powershell для выполнения SSH команды на linux хосте

1) Запустить Powershell на Windows машине с которой будем осуществлять управление.

2) Выполнить следующие команды:

$user_name = "root"
$ip_address = "192.168.33.222"
$ssh_command = "ls -l"
$id_file = "C:\1\sb-ssh01-openssh"
$ssh_output = . ssh -i $id_file ${user_name}@${ip_address} $ssh_command
write-host $ssh_output

3) Теперь можно сохранить, листинг выше в файле C:\1\ssh_ls.ps1 и вызывать с помощью следующей команды:

cd c:\1

.\ssh_ls.ps1

-6

Отобразиться ошибка, показанная на скриншоте. Чтобы ее преодолеть нужно у файла sb-ssh01-openssh на вкладке Security оставить только текущего пользователя. После правки доступа, скрипт выполняется и результат виден на экране.