Учитывая сценарий:
- Удаленная машина: SSH сервер; пользователь не имеет прав администратора;
- Локальный компьютер: клиент SSH; Пользователь имеет права администратора.
Если пользователь , входящий в систему с удаленного компьютера с локального компьютера , желает взаимодействовать с удаленным пользователем с помощью оболочки, не установленной на удаленном компьютере , как пользователь может выполнить это самостоятельно?
Пример: пользователь использует fish на локальном компьютере и хочет также использовать его на удаленном компьютере , но на удаленном компьютере установлены только bash и zsh .
shell
ssh
not-root-user
sampablokuper
источник
источник
Ответы:
Установите вашу любимую оболочку на удаленной машине. Для этого вам не нужны какие-либо привилегии администратора, вы можете устанавливать программы в своем домашнем каталоге, это просто менее удобно. Смотрите Установка на debian 5 32-bit без рута , Как установить программу локально без привилегий sudo? , Отслеживание программ и других вопросов .
Если вы хотите автоматически войти в оболочку, которую вы установили самостоятельно, а не в оболочку по умолчанию, см. Раздел Создание оболочки zsh по умолчанию без доступа root
Если вам нужно только манипулировать удаленными файлами, вы можете использовать SSHFS для монтирования дерева удаленных каталогов на локальном компьютере.
Если у вас нет места в вашем домашнем каталоге или это общая учетная запись, вы можете обойтись настройкой обратного туннеля SSH и смонтировать локальное дерево каталогов на удаленном компьютере с SSHFS , предполагая, что эти два компьютера работают под одной и той же архитектурой ( тот же вариант Unix на том же типе процессора). Если две машины имеют несовместимые архитектуры, вы даже можете установить программы для удаленной архитектуры в локальном домашнем каталоге. Это может быть не очень удобно, так как вам придется правильно устанавливать пути для программ, чтобы находить свои библиотеки, файлы конфигурации и другие файлы данных.
Eshell Emacs совместим с Tramp : если вы перейдете на удаленный каталог в Eshell, вы будете выполнять команды на удаленном компьютере.
источник
Простой ответ: Нет, вы не можете использовать на удаленном блоке программу, которая не установлена на удаленном блоке.
Обходной путь: вам не нужны права администратора для установки оболочки в удаленной системе. Вы можете установить его в свой домашний каталог, но, вероятно, вам придется скомпилировать его из исходников. Как правило, используя что-то вроде
configure --prefix=${HOME}/local
Последнее замечание: вы не можете изменить оболочку по умолчанию на не "официальную" (см.
/etc/shells
), Но вы можете поместить что-то вродеexec fish
в.bashrc
источник
Пользователь может использовать sshfs для монтирования своего удаленного $ HOME на своем локальном компьютере. В таком сценарии пользователь не будет использовать свою предпочтительную оболочку на удаленной машине напрямую, но, тем не менее, лучше, чем ничего.
источник
Основной подход заключается в том, чтобы скопировать исполняемый файл оболочки на удаленный хост, а
scp
затем выполнить егоssh
, например-t
Необходимо для того , чтоssh
выделяет TTY, что он не будет делать по умолчанию при выполнении удаленной команды.Это предполагает, что ваш удаленный хост работает под управлением той же операционной системы. Если нет, вы захотите выяснить удаленную операционную систему и скомпилировать (возможно, статический) двоичный файл, который вы можете скопировать.
источник
Очевидный ответ «установить команду на удаленной машине» - самое чистое решение, поэтому мы не должны его игнорировать:
Если это возможно , чтобы установить команду как корень, например , с
sudo apt-get install fish
,команда может работать следующим образом:
ssh remote -t fish
Вопрос в том, что делать, если мы не можем установить команду на удаленном компьютере.
Или, более конкретно, речь идет о том, что мы не можем установить команду от имени пользователя root .
Это не значит, что мы не можем установить вообще!
Что еще возможно, это установить команду внутри домашнего каталога , собрав ее из исходного кода .
Преимущество этого заключается в том, что он заботится обо всех связанных файлах поддержки, которые могут поставляться с командой, и о том, как программа их находит. В
fish
примере оболочки это функции завершения и т. Д., Все они недоступны, если мы просто скопируемfish
двоичный файл.Сборка команды из исходного кода требует средств разработки и файлов разработки используемых библиотек, что может быть слишком сложным.
Но многие программы поставляются со всеми необходимыми источниками, поэтому это может быть легко. Трудно сказать раньше, но можно просто попробовать.
Для установки команды в домашний каталог
configure
предоставляется путь для установки, который необходимо проверить в инструкциях по сборке. Например:Обратите внимание , что это не
sudo make install
как обычно - в это весь смысл установки его на месте , чтобы не нужно SUDO здесь.Для получения общей информации об установке программ из исходного кода см. Askubuntu.SE: Как мне установить файл .tar.gz (или .tar.bz2)?
источник
Я не думаю, что вы можете запустить оболочку, которая находится на одной машине на другой. Единственный способ запустить его на удаленной машине - это установить его.
источник