Продвижение моего PS1 запрашивает по ssh

Я использую определенную подсказку "PS1", которую я люблю. Я совместно использую несколько логинов с другими другими людьми на нескольких различных серверах. Я задавался вопросом, был ли способ указать в моем локальном профиле удара удаленную подсказку или какой-либо другой путь другой затем копия и вставляющий каждый раз I удаленный в.

19
задан 20.03.2019, 04:21

6 ответов

Загрузите файл на каждой удаленной машине, скажите ~/.my_custom_bashrc, с Вашим пользовательским bash конфигурация, (в этом случае PS1=...) затем запуск ssh с:

ssh user@host -t "bash --rcfile ~/.my_custom_bashrc -i"

Можно легко использовать a bash функционируйте как обертку для удобочитаемости.

17
ответ дан 07.12.2019, 10:18

Если Вы просто хотите отправить PS1 переменная, и это не содержит a ' (одинарная кавычка), попробуйте:

ssh targethost -t "PS1='$PS1'; exec bash"

Локальное .bashrc может перезаписать PS1 хотя (благодаря Dennis Williamson для указания на это).

Существуют способы передать переменные среды по ssh, но они обычно отключаются в конфигурации сервера. Если PermitUserEnvironment директива включена в конфигурации сервера, и у каждого пользователя есть их собственная пара ключей (да, Вы не могли бы быть настолько удачливыми), можно добавить environment="PS1=…" к строке в ~/.ssh/authorized_keys соответствие Вашему ключу.

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

ssh targethost mkdir mrstatic.home
scp .bashrc targethost:mrstatic.home/

Создайте символьные ссылки в mrstatic.home каталог, указывающий назад на соответствующую запись в родительском каталоге, когда Вы хотите совместно использовать файл с другими пользователями.

Затем войдите в систему с

ssh targethost -t 'HOME=~/mrstatic.home; exec bash'`

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

(Конечно, общие учетные записи являются плохой идеей, но я понимаю, что Вы не можете иметь возможности изменять ту ситуацию.)

10
ответ дан 07.12.2019, 10:18
ssh -t user@host "remote='$PS1' bash -i"

Затем при подсказке:

PS1=$remote
3
ответ дан 07.12.2019, 10:18

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

таким образом необходимо было бы настроить .bashrc на сервере, чтобы проверить существующий PS1 (или безотносительно переменной) и только установить PS1, если это уже не установлено.

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

1
ответ дан 07.12.2019, 10:18

Не совместно используйте логины. SSH как самостоятельно, затем сделайте sudo -su shareduser (-s означает "оболочку").

Сделать sudo сохраните свой корневой каталог:

Defaults env_keep += "HOME"
1
ответ дан 07.12.2019, 10:18

Вы могли сделать материал как монтирование Вашего дома по sshfs/nfs, но самым легким решением является к scp Ваш bashrc через к новой машине. Это также приносит псевдонимы и материал.

-2
ответ дан 07.12.2019, 10:18

Теги

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