Нажатие моей подсказки PS1 по ssh

Я использую конкретное приглашение PS1, которое мне нравится. Я разделяю несколько логинов с другими людьми на нескольких разных серверах. Мне было интересно, есть ли способ указать в моем локальном профиле bash удаленное приглашение или любой другой способ, который затем копирует и вставляет каждый раз, когда я удаляюсь.

8 Solutions collect form web for “Нажатие моей подсказки PS1 по ssh”

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

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

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

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

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

Местный .bashrc вполне может перезаписать PS1 хотя (спасибо Деннису Уильямсону за это указание).

Существуют способы передачи переменных среды по 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_* (обычно они используются для настроек локали). Если оба этих условия выполнены, вы можете установить переменную, которая на самом деле не используется для локалей, например LC_USER , на стороне клиента, и проверить ее на сервере .profile .

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

Поместите свою PS1-подсказку в ~ / .ssh / environment, а сеанс ssh перенесет ее на каждый хост, который вы заходите. Это работает для меня с openssh 4.3p2.

 ssh -t user@host "remote='$PS1' bash -i" 

Затем в командной строке:

 PS1=$remote 

Вы можете указать переменные среды на стороне клиента, и если ssh-сервер разрешит это (проверьте man sshd-config), эти переменные будут скопированы на сеанс при входе в систему.

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

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

Не сообщайте логины. SSH как вы сами, тогда сделайте sudo -su shareduser ( -s означает «shell»).

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

 Defaults env_keep += "HOME" 

Если вы хотите сделать это, не требуя дополнительного scp, вы можете сделать что-то вроде этого:

ssh -t srvname ' cp ~/.bashrc ~/.bashrc.n &>/dev/null ; echo "LS_COLORS=\"no=00:fi=00:ETC:ETC:ETC\";" >> ~/.bashrc.n ; echo "export LS_COLORS" >> ~/.bashrc.n ; echo "alias ls=\"ls --color=auto\";" >> ~/.bashrc.n ; exec bash --rcfile ~/.bashrc.n'

Это создаст .bashrc.n, основанный на серверах bashrc, но с вашими переопределениями.

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

  • Как я могу запустить программу удаленно через SSH, но показывать локально
  • Почему rsync через SSH дает мне 10-кратную пропускную способность SCP?
  • Как запустить ssh-сервер на iOS?
  • SSH: сбой с закрытым ключом, работает с копией ключа, расположенного в другом месте
  • SSH Advanced Logging
  • Автозапуск туннелей SSH при загрузке (Ubuntu)
  • Разрешения ssh и home directory
  • Сбой соединения openSSH с помощью одноранговой сети
  • Не удается передать ssh на рабочий стол
  • Подключение к SSH из-за прокси-сервера HTTP
  • DNS через SSH-туннель
  • Interesting Posts

    Как устранить недостающие DLL и поврежденные системные файлы после обновления Windows-7?

    Что такое урожайность Скалы?

    Запуск программы без административных привилегий в Windows 7

    Как изменить параметры конструктора scala по умолчанию на private val?

    Как я могу использовать условие для установки значения переменной в Ansible?

    Преобразование уравнений MS-Word 2003 в MS-Word 2007

    Каков лимит вызовов API в Facebook?

    Как восстановить .bash_profile на mac? Ни один из моих терминалов unix не работает

    Как работает DNS?

    Бесполезное вращение фотографий с помощью Windows Photo Viewer? (XP против Win7)

    Почему excel всегда говорит «.. может содержать функции, которые не совместимы с CSV» при сохранении CSV-файла?

    Можно ли запросить базу данных служб запуска для приложений, которые откроют произвольный файл или тип UTI?

    Брандмауэр Windows предотвращает совместное использование файлов и принтеров

    Не удалось загрузить файл или сборку … Была сделана попытка загрузить программу с неправильным форматом (System.BadImageFormatException)

    Как преобразовать struct System.Byte byte в объект System.IO.Stream в C #?

    Давайте будем гением компьютера.