Безопасно сделайте доступным скрипт .BAT доступным через SSH / Telnet

460
Manchineel

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

Мой компьютер с Windows 10 запускает сервер Minecraft в окне командной строки с помощью пакетного сценария.

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

Другие администраторы и я хотим иметь возможность управлять этим сервером удаленно, предпочтительно через SSH или Telnet, в зависимости от того, что легче установить. Я хочу дать администраторам 100% -ное доверие к Minecraft Server (имеется в виду оболочку сервера, во время выполнения файла bat), но не более того, то есть я не хочу, чтобы им был разрешен доступ к моей команде ПК с Windows. линия вне пакетной оболочки, с которой они должны иметь право взаимодействовать через SSH / Telnet, как описано выше.

Следовательно, сессия должна выглядеть, например:

## they connect > gamemode 0 someone [timeanddate] timeanddate [Server]: Set gamemode for player someone to survival > stop [timeanddate] timeanddate [Server]: Saving chunks... (et cetera) ## session ends, they get disconnected 

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

Было бы возможно сделать такую ​​вещь? Если да, то как?

Я согласен с установкой любого программного обеспечения, если оно имеет открытый исходный код или является проприетарным и исходит из авторитетного источника, продумывает реестр, модифицирует систему (хотя она должна иметь возможность получать обновления Windows), создает учетные записи пользователей. и используя Raspberry Pi, если необходимо. У меня есть статический IP-адрес и все возможности перенаправления портов на моем маршрутизаторе.

1
Возможно, вам придется проявить творческий подход, ограничить и заставить пакет выполнить самопроверку или что-то подобное, когда он запускается с циклом и ждет или делает паузу каждые столько секунд. Затем вы предоставляете учетную запись SSH, которая аутентифицирует доступ, только для удаления или создания файла в той же папке (домашней папке) и только в той папке, к которой у него есть доступ. Затем они просто используют команды для удаления или создания файла, и пакетный сценарий будет проверять каждую минуту и ​​т. Д., И он существует или не существует, останавливается или запускается на основе этого, и у них есть способ проверить, он работает или не внешне от этого с другой машины Pimp Juice IT 6 лет назад 0
Посмотрите этот пост, где этот человек контролировал логику пакетного сценария, основываясь на состоянии существующего файла или нет, и он делал все, что зависит от того, как эта логика составлена. https://superuser.com/questions/1242506/trigger-an-action-on-a-windows-machine-from-an-android-phone-via-network/1243112#1243112. Очевидно, вы бы поставили простую проверку цикла в пакете, а не с помощью планировщика заданий, я полагаю, если вы не хотите использовать планировщик заданий и проверять его каждые 1 минуту и ​​т. Д. Pimp Juice IT 6 лет назад 0
@TheFurryITSnuggleBuddy, но как бы я мог подключить пользователя к SSH, а затем получить немедленный доступ к экрану процесса и, как только он или она отключится или процесс завершится, закроет соединение, не позволяя им больше контролировать компьютер? И самое главное, как только они отключатся, как они возобновят сеанс (в Linux я бы использовал «экран», например, Manchineel 6 лет назад 0
У меня нет времени что-либо проверять, чтобы сказать вам со 100% уверенностью, что такое решение будет или не будет работать, но я просто привел это в качестве примера того, что можно рассмотреть, поиграть, протестировать и т. Д., Если у вас есть время и думаю, стоит усилий. Я полагаю, стоит подумать о том, чтобы установить пакетную логику, чтобы предпринять соответствующее действие, основанное на том, есть файл или нет, и начать сеанс. Возможно, это не будет 100% SSH, или им потребуется доступ к SSH 1-соединению, чтобы что-то сделать с файлом, а затем SSH 2-соединение на основе того, что вы сделали с файлом и т. Д. В SSH 1, чтобы установить другое. Pimp Juice IT 6 лет назад 0
Проявите творческий подход, если у вас есть время и опробуете некоторые идеи, но вам, вероятно, понадобится запустить «другой» процесс, который проверяет подключение сеанса (затем вы можете подключиться), отключение сеанса и т. Д., Чтобы вы могли «возобновить» сессия. Вы используете Windows 10 и пакетный режим, так что, возможно, вы могли бы использовать планировщик задач и запланировать что-либо для проверки каждые 1 минуту, 5 минут и т. Д. В зависимости от того, находится ли файл в том месте, где его проверяет логика. Я уверен, что мог бы заставить что-то работать и написать убедительный ответ, но у меня нет времени, чтобы сделать это прямо сейчас. Pimp Juice IT 6 лет назад 0
Поможет ли использование удаленных сеансов PowerShell? @TheFurryITSnuggleBuddy Manchineel 6 лет назад 0
Возможно, но я просто не могу подтвердить себя, но все, что вы прочитали, кажется, может соответствовать вашим потребностям, я бы определенно попытался провести небольшое быстрое тестирование. Я не уверен насчет требования, касающегося ограничения окна терминала, ограниченного только пакетным скриптом или чем-то подобным, что кажется мне сложной задачей, почему я предложил творчески мыслить или иметь другой процесс, который контролирует что-либо, чтобы начать или запустить ОСТАНОВИТЕ и, возможно, запишите пакетный терминал в файл, доступ к которому имеют другие. Вероятно, много способов сделать это просто не хватает времени еще. Pimp Juice IT 6 лет назад 0
Таким образом, хотя вы можете предоставить им доступ на чтение к журналу и доступ к удалению или созданию файла только в одной папке, возможно, вы могли бы получить ожидаемый результат в виде обходного пути. Я тоже могу задуматься, что меня не удивит. Если у меня будет время позже на этой неделе после этого огромного проекта по базам данных, я продолжу работу над выводом, если к тому времени у вас ничего не будет. Если вы добились какого-либо прогресса, пожалуйста, дайте мне знать, что вы определили с чем-либо, будь то полная работа, половина работы или что-то еще. Pimp Juice IT 6 лет назад 1
@TheFurryITSnuggleBuddy большое спасибо. Я буду экспериментировать с PowerShell Manchineel 6 лет назад 0
Любые новости о вашем решении случайно? Pimp Juice IT 6 лет назад 0
@ITSnuggles извините, в то же время у меня произошел сбой диска. Я почти закончил восстановление данных и конфигурации Manchineel 6 лет назад 0

0 ответов на вопрос

Похожие вопросы