Нажатие моей подсказки 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 передавать пустые аргументы?
  • Как SSH на localhost без пароля?
  • Как заставить OS X вернуть заголовок терминала в исходное название при возврате из ssh?
  • Запустить удаленную команду ssh с полной оболочкой входа в систему
  • Переслать SSH-трафик через среднюю машину
  • Не удается войти с PuTTY в RasPi 3 + OSMC
  • Как заставить клавиши HOME или END работать в mc, работающем на OS X (ssh)
  • Как настроить ssh, key-based («без пароля») для входа на сервер sshd Linux / MacOSX через клиентов Windows, Linux или MacOSX?
  • Подключение к SSH из-за прокси-сервера HTTP
  • Без пароля SSH (Windows -> CentOS)
  • Работа над удаленным проектом с Eclipse через SSH
  • Давайте будем гением компьютера.