1

Я хотел бы знать, возможно ли запустить локальное приложение на удаленном сервере по протоколу SSH?

4 ответа4

2

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

  • «Запуск приложения» обычно означает «разрешение процессору обрабатывать инструкции двоичного файла (« .exe »)».

  • «Локально» обычно означает, что «ЦП компьютера, перед которым я сижу, выполняет код»

  • ssh используется для шифрования потоков информации

Итак, что это будет?

  • Вы хотите запускать локальное приложение локально (с помощью своего ЦП), но хотите взаимодействовать с ним с сервера? Да, это можно сделать через ssh, поищите ssh tunneling.

  • Вы хотите, чтобы ваше локальное приложение обрабатывалось процессором (ами) сервера? Затем вы должны скопировать ваше двоичное / локальное приложение на сервер, а затем запустить его на сервере. Вы можете использовать ssh для копирования. Но ваше «локальное приложение» больше не является локальным после копирования.

Вы не можете выполнить код на процессоре, не сделав его доступным ранее.

1

Чтобы выполнить локально установленные приложения с использованием ЦП и памяти другого компьютера, вы можете - при условии, что процессоры совместимы - попробовать это. Я не уверен, насколько хорошо это будет работать, но теория кажется обоснованной :) Вам, вероятно, понадобится доступ суперпользователя на удаленном сервере, чтобы это работало.

  • SSH на удаленном сервере

  • Смонтируйте локальную корневую файловую систему где-нибудь. Вам не следует делать это вообще, если вы не уверены, что можете доверять администраторам удаленной системы.

    • Это можно сделать через sshfs, если вы можете использовать ssh с сервера в локальной системе. Я думаю, что вы можете настроить это, перенаправив порт обратно через соединение, которое вы установили при подключении с локального на сервер, но я сам не связывался с такими махинациями.
      • Как правило, если локальный компьютер находится в домашней сети, вы просто настроите переадресацию портов на маршрутизаторе. Вы , вероятно , следует отключить пароль входа в sshd_config локальной системе, прежде чем идти по этому пути, и сгенерировать ключ SSH с ключевой фразы для вашей учетной записи на сервере, scp ING в id_?sa.pub возвращается в локальный, чтобы добавить его в ваши ~/.ssh/authorized_keys . Ограничение IP-адресов, которые могут подключаться к вашей машине, является еще одной хорошей идеей. И так далее.
    • Если вы хотите запустить все, что нужно для запуска с правами root, я думаю, вам нужно настроить монтирование sshfs в качестве root на вашей локальной файловой системе. Это означает, что вам нужно разрешить пользователям входить в вашу локальную папку с правами root, что является еще одним сомнительным шагом в политике. Я на самом деле не уверен в этом, вы можете быть в состоянии sudo в оболочке chroot.
    • Вы можете смонтировать его другими способами, например, через NFS, но sshfs, вероятно, проще всего обезопасить. Делать все это через VPN, вероятно, было бы разумнее.
  • После того, как вы смонтировали файловую систему и все еще используете ssh-in-ed для сервера, выполните

    chroot / путь / к / mount / of / local / filesystem COMMAND ARGS

Или вы можете просто cd в каталог и запустить chroot и тогда вы будете иметь вид корневой оболочки на своей собственной системе, с обработкой, выполняемую сервером. Преимущество первой формы состоит в том, что вы можете удобно сохранять выходные данные в серверной системе, поскольку любые перенаправления будут выполняться на сервер. НАПРИМЕР

chroot /path/to/mount/of/local/filesystem find -iname "somefile" > ~/tmp/somefile.find.out

сохранит список файлов с именем "somefile" в вашем домашнем временном каталоге на сервере.

предостережений

Это, по крайней мере, с моей точки зрения, довольно экспериментально. Я не уверен, что может пойти не так, но я бы не стал пробовать это, если бы за это не поручилось несколько человек. Даже тогда я не попробовал бы это на производственной системе. Если бы я делал IT-телешоу, этот сегмент был бы снабжен субтитрами со словами « НЕ ПОПРОБУЙТЕ ЭТО ДОМА »

Определенно, вам понадобятся совместимые процессоры на двух компьютерах: если локальная система - i386, то сервер должен быть i386 или amd64. Кроме того, поскольку ядро сервера будет выполнять эту работу, вы сможете запускать только локальные приложения, которые работают с версией ядра, работающей на сервере. Вероятно, было бы лучше, если бы они были одной и той же версии. Так что, если на вашем локальном компьютере и на удаленном сервере установлена 32-разрядная версия Debian Squeeze, это может работать без проблем.

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

0

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

#!/bin/bash

SOURCE_BIN="/some/path/binary"
DEST_HOST="name-of-system"
DEST_BIN="/another/path/binary"

cat ${SOURCE_BIN} | \
ssh ${DEST_HOST} "cat >${DEST_BIN}; chmod +x ${DEST_BIN}; ${DEST_BIN} with args; rm ${DEST_BIN}"
0

Вы можете с одной машины (машины A) запросить, чтобы другая машина (машина B) запустила программу, уже находящуюся на машине B. ssh позволит вам сделать это.

И я думаю, что вы можете с компьютера A получить доступ к установочному файлу с компьютера B и запустить его на компьютере A, который передаст этот файл в ОЗУ компьютера A. Я думаю, что обмен файлами Windows делает это. (кстати, это не перемещает и не копирует файл, ни один файл не исчезает и не появляется нигде при этом. Лучшей терминологией может быть то, что файл копируется в оперативную память и становится процессом, это происходит каждый раз, когда программа запускается, даже если она локальна)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .