Showing posts with label putty. Show all posts
Showing posts with label putty. Show all posts

Sunday, 12 May 2024

Кросс-платформенное удалённое управление в Powershell.


Всем привет.

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

Основная мысль за удалённым PowerShell

Удалённое взаимодействие PowerShell работает схожим образом с Telnet и прочими древними технологиями удалённого управления. Когда вы запускаете некую команду, она исполняется в самом удалённом компьютере - обратно в ваш компьютер приходят лишь получаемые результаты этой команды.

Удалённое взаимодействие на устройствах Windows

PowerShell применяет протокол взаимодействия с названием Web Services for Management (WSMan). WSMan работает целиком поверх HTTP или HTTPS (HTTP по умолчанию), упрощая маршрутизацию через межсетевые экраны в случае их необходимости (поскольку каждый из таких протоколов пользуется для взаимодействия единственным портом). Реализация Microsoft для WSMаn поступает в виде службы в фоновом режиме, Windows Remote Management (WinRM). WinRM по умолчанию устанавливается в устройствах Windows 10, а также в сервере 2012 и выше. По умолчанию, эти службы отключены, но запросто могут включаться индивидуально или групповой политикой.

Удалённое взаимодействие на устройствах macOS и Linux

Как вы могли догадаться, WSMan и WinRM это службы только для Windows. Поэтому, чтобы PowerShell обладал возможностями удалённого взаимодействия, его команда приняла решение что было бы лучше воспользоваться стандартном отрасли Безопасной оболочки (SSH, Secure Shell)/ SSH упрощает маршрутизацию через межсетевые экраны, в случае такой необходимости (потому как этот протокол применяет для взаимодействия единственный порт), и десятилетиями применялся профессионалами Linux. Microsoft портировал в Windows OpenSSH, а потому вы даже можете применять его для удалённого взаимодействия в Windows.

Кросс-платформенное удалённое взаимодействие

Вы уже изучили что все командлеты PowerShell в качестве своего вывода производят объекты. Когда вы выполняете некую удалённую команду, она выдаёт объекты, которые необходимо поместить в некий вид, который запросто передаётся через сетевую среду. Как оказалось, XML - отличный способ для осуществления этого, а потому PowerShell автоматически такие объекты вывода выстраивает в последовательную форму (упорядочение, serializes) в XML. Данный XML передаётся через сетевую среду и затем в вашем компьютере выполняется обратное преобразование в параллельную форму (развёртывание, deserialized) в объекты, с которыми вы можете работать внутри PowerShell.

Упорядочение и развёртывание это всего лишь некий вид преобразования формата: из объектов в XML (упорядочение) и из XML в объекты (развёртывание). Зачем вам беспокоиться относительно того как возвращается такой вывод? Поскольку такие упорядоченные и затем развёрнутые объекты это всего лишь некого рода моментальные снимки; они не обновляются сами по себе непрерывно. Например, когда вы получили определённые объекты, которые представляют тот процесс, который запущен в удалённом компьютере, то что вы получили обратно будет в точности тем, что имелось в тот конкретный момент времени, в который был выработаны эти объекты. Такие объекты, как применение памяти и использование ЦПУ не будут обновляться чтобы отражать последующие условия. Кроме того, вы не можете заставлять свои развёрнутые объекты выполнять что бы то ни было - вы не можете указывать им останавливать себя, например. 

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

Для работы удалённого взаимодействия у вас имеются два основных требования:

  • Ваш компьютер, и тот, в который вы желаете отправлять команды, оба, должны исполнять PowerShell v7.1 или последнюю версию. 
  • В идеале, оба компьютера должны быть участниками одного и того же домена или доменам с двусторонним доверием. Существует возможность получения удалённого взаимодействия для работы вне домена, однако это слишком заумно.

Friday, 6 November 2020

Смена стандартного порта SSH-сервера.


Всем привет.

По умолчанию SSH-сервер открывает для входящих соединений 22 TCP-порт, и тем самым вызывает потенциальную угрозу bruteforce-атак, поскольку злоумышленник обнаружив на сервере такой открытый порт, пытается подобрать пароль к удалённому серверу при помощи специальных средств.

Особо отметим, что не стоит воспринимать смену стандартного порта SSH-сервера как панацею. Китайская мудрость гласит - «Security by Obscurity is no Security at all». Не забывайте и про другие методы защиты SSH, такие как правильная настройка межсетевого экрана, разрешение доступа только ограниченному набору IP-адресов, отказ от парольной аутентификации и использование ключей RSA/DSA, и т.п.

Конфигурация SSH-сервера обычно располагается в /etc/ssh/sshd_config. Для редактирования этого файла вам потребуются привилегии суперпользователя root, или возможность выполнить sudo для получения таких привилегий текстовым редактором.

Выполним команду:

sudo nano /etc/ssh/sshd_config

В открывшемся файле найдите следующую строку:

Port 22

Закомментируйте её и добавьте новую строку со случайным номером порта, например 58291. Номер порта не должен превышать 65535. Также удостоверьтесь, что выбранное вами значение не конфликтует с другими сервисами в системе, например mysqld использует порт 3306, httpd - 80, ftpd - 21. Рекомендуем выбрать пятизначное значение. На всякий случай, для просмотра уже открытых в системе портов, выполните следующую команду:

netstat -tupln | grep LISTEN

Monday, 21 September 2020

SSH-клиент и РРК-файл.

Всем привет.

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

Ключи создаются просто. При этом в ваше распоряжение попадает приватный ключик в виде РЕМ-файла. PEM - наиболее популярный формат среди сертификационных центров. PEM сертификаты могут иметь расширение .pem, .crt, .cer, и .key (файл приватного ключа). Он представляют собой ASCII файл, закодированный по схеме Base64. 

Однако  популярные SSH-клиенты Putty, и WinSCP, любят другой формат открытого ключа который отличается от формата OpenSSH. Он называется РРК.

Нет проблем чтобы преобразовать файл .pem в .ppk-файл с помощью инструмента командной строки puttygen:

$ puttygen keyfile.pem -O private -o Maxkey.ppk

Для открытого ключа:

$ puttygen keyfile.pem -L

После надо обязательно в самом SSH-клиенте Putty, илиWinSCP,  или MobaXTerm  указать путь к новому файлу ключа. Сам он его не найдет.





На этом все.

Monday, 13 April 2020

MobaXTerm - больше чем SSH-клиент.

Всем привет.

Перебирая в недавнем обзоре SSH-клиентов попалась в мне в руки MobaXTerm. Которая меня приятно удивила. 

MobaXTerm - это усовершенствованный терминал для Windows, что позволяет иметь дополнительные возможности для Unix-подобных систем. Он имеет ряд удалённых сетевых инструментов, таких как SSH, X11, FTP, и команды Unix. Так же как и Putty и OpenSSH, MobaXTerm даёт вам возможность запуска удалённой сессии. Программа может работать с разными протоколами: SSH, Telnet, RDP, VNC, FTP, SFTP, Rlogin, XDMCP. Интегрированный терминал может работать под Unix команды через скрипты оболочки Bash. 


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

Есть одно преимущество, которое выделяет Moba над своими конкурентами, это наличие графического браузера по протоколу SFTP. Если Вы входите на удалённый сервер через SSH-сессию, то браузер всплывает в левой боковой панели и позволяет легко перетаскивать файлы с удалённого сервера. Нравится ли Вам этот вид интерфейса - это вопрос личных предпочтений. Те, кто привык к bash в Unix Shell могут решить что данная функция абсолютно бесполезна.


Tuesday, 11 February 2020

Варианты SSH-клиентов для Windows.

Всем привет.

Уверен, что любому админу приходилось пользоваться SSH-клиентом. И если ваша основная операционная система Linux (или unix подобная), то доступ к этой функции получить довольно просто - открыл терминал и готов. С Windows не все так просто. Чаще всего принято использовать Putty. Лично я именно им и пользуюсь уже много лет. Но мне стало интересно, какие еще альтернативы есть славному Putty. Немного побродив по сети я выделил следующие  бесплатные альтернативы:

1) SuperPutty


Ну тут все очевидно. По факту, это просто более удобное GUI для Putty. Главное удобство - вкладки. Если вы админите несколько устройство одновременно, то этот вариант явно удобнее, чем несколько окон обычного Putty.

Нативный SSH-клиент в Windows.

Всем привет.

Пробуем установить нативного SSH-клиента в Windows с помощью PowerShell. 

Первым делом запускаем PowerShell с правами администратора (жмём клавиши «Windows+X» и кликаем «Windows PowerShell (Администратор)«). Далее проверяем доступность OpenSSH для установки такой командой:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Система должна показать примерно такой ответ, как на этом скрине, где «NotPresent» означает, что запрашиваемый компонент не установлен:

Нативный SSH клиент в Windows 10: как включить - #Windows10

Исходя из того, что нужный нам компонент доступен, запускаем его установку следующей командой (если он не доступен, то необходимо проапдейтить ОС и/или включить Режим разработчика):

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Версия на печать

Популярное