Вопрос: как использовать временный профиль, когда ssh на удаленном сервере


Я часто вхожу в систему на удаленные серверы, используя ssh, для выполнения стандартных административных действий. У меня есть локальные bashrc / vimrc и различные другие файлы конфигурации, которые я хотел бы получить удаленно. Часто я только один раз заходил на эти удаленные серверы, поэтому я не хочу оставлять копию своего профиля в этих блоках, некоторые из которых находятся на клиентских сайтах.

Я подумал о том, чтобы сделать какой-то взлом, чтобы удаленный сервер смонтировал fusefs webDAV или какой-либо другой способ подключения удаленной файловой системы к удаленному серверу в течение всего сеанса. Однако это имеет проблемы, если удаленная система не имеет необходимых пакетов или отключена.

Есть ли хорошие решения этой проблемы, которые совместимы с кросс-дистрибуцией, а также самые последние из Fedora / RHEL / ubuntu / debian / CentOS и не мешают или замедляют процесс входа в систему?

[РЕДАКТИРОВАТЬ]

Я думаю, что одно из других соображений заключается в том, что я могу войти в систему с учетной записью пользователя elses, поэтому я не хочу делать какие-либо постоянные изменения в профиле. В идеале я бы просто использовал временный профиль для сессии, а затем отменил его при выходе из системы. это может попасть в луну на территории палки ;-)


5
2017-07-16 20:55


Источник




Ответы:


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

Ваш скрипт установки может включать wget'ing / curl'ing / scp'ing временный домашний каталог на что-то вроде $HOME/tmphome, а затем запустить такой скрипт, чтобы запустить там оболочку:

#!/bin/sh

HOME="$HOME/tmphome"
cd "$HOME"
bash --login

Это должно сделать довольно хорошую работу по изоляции ваших rc-файлов до tmphome, а ssh -t будет пропускать пользовательский bashrc. До тех пор, пока ваша среда будет легкой, копирование не займет много времени.

Ваша команда может быть чем-то вроде ssh -t user@host 'wget http://server/tmphome.tar.gz && tar -zxvf tmphome.tar.gz && rm tmphome.tar.gz && tmphome/shell.sh'


5
2017-07-16 23:33





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


2
2017-07-16 21:14



Это может подорвать всю часть вопроса «Я могу только войти в систему»; установка DVCS, возможно, появление открытых брандмауэров или что-то еще, а затем вытащить копию вашей среды, вероятно, займет больше времени, чем просто устранение проблемы. - womble♦
Я закончил это, выполнив скрипт .ssh / rc, который синхронизирует мой .bashrc-файл с удаленными серверами, и вы правы, он работает как шарм. Однако это не соответствует требованию первоначального вопроса о том, чтобы быть непостоянным, поэтому я не могу принять эти ответы. Это ответ на другой вопрос .... ;-) - Tom H


Многие администраторы «старой школы» unix хранят свои общие настройки в cvs репозиторий. При первом входе в новую систему они cvs checkout этот репозиторий и настроить их .bashrc сделать cvs update для получения текущих настроек, затем вызовите ~/repo/bin/setup (где repo где cvs checkout целевых и setup это скрипт, который добавляет /repo/bin к их $PATH устанавливает aliases и т. д.).

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

Вы могли бы, конечно, заменить svn или git для cvs,


1
2017-07-16 21:15



На сколько производственных систем установлен ваш VCS? - womble♦
я бы подумал, что cvs будет доступен. так что scp / rcp или ftp / curl / wget можно было бы использовать для извлечения файлов. - Tom H


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

Проблема заключается в том, что для машин, на которые вы зайдете только для решения проблемы, время, необходимое для настройки вашей среды, вероятно, превысит время, необходимое для фактической фиксации проблемы. Проблема несколько усиливается вашим заявленным желанием покинуть систему без ваших пользовательских настроек, когда вы закончите - замечательное чувство, так как меня укусил администратор, который не мог жить без vi-режима на (общем) root shell и readline. Сложно было заставить ничего сделать, когда вы привыкли к ключевым словам.

Мне повезло больше в последнее время; когда я отвечал за то, что делал что-то на серверах, они были «моими», в том смысле, что у меня есть постоянная административная ответственность / полномочия, и я только что использовал свой инструмент автоматизации системы для предварительной настройки машин, как Они мне нравятся.

Для временного доступа, если бы я должен был вернуться к нему и отчаянно нуждался в моей собственной маленькой среде, я был бы склонен разрабатывать два сценария оболочки:

  • Один из них, который я запустил до того, как я вошел в новый сервер, который установил все мои необходимые файлы конфигурации (сохраняя копию того, что было там раньше), и, возможно, установленные пакеты (подходящие для дистрибутива под рукой) или, по крайней мере, что не хватало, поэтому я знал, что я буду hanstrung на удаленном сервере, когда я начал работать над ним;
  • Другой, который очистит все до состояния, которое было до того, как я запустил первый скрипт - удалите пакеты (вам нужно убедиться, что вы знаете, что вы установили, в отличие от того, что было там до того, как вы туда попали) , и верните исходные файлы конфигурации на место.

Эти сценарии были бы достаточным количеством работы для написания и отладки, особенно в отношении слабых сторон разных дистрибутивов. Вот почему я просто научился ладить с нормальными стандартами по умолчанию для любой легкой работы, что является хорошей привычкой вступать, если вы в будущем являетесь частью команды и должны делиться средой с другими людьми ( Г-н vi mode bash shell, я вопию вы).


1
2017-07-16 23:03