Изменение отображенного имени хоста в ударе запрашивает на основе данных для входа в систему

Я использую PsPad (бесплатный усовершенствованный текстовый редактор), чтобы сделать подобные поиски журнала. Если Вы переходите к Поиску-> Поиск / Замена в файлах, можно искать любую текстовую строку в ряде файлов в определенном каталоге.

2
задан 7 November 2009 в 17:27
6 ответов

Это оказывается этим ssh находит строки в ssh_config(5) сопоставлением строк, таким образом, хорошо, если весь IP является тем же.

Что Вы хотите, затем,

  • Различные строки в .ssh/config для каждой системы использовать HostName дать ssh реальное доменное имя хоста
  • Имейте три различных переменные среды с различными подсказками в них в Вашем окружении
  • Имейте каждую строку в .ssh/config отправьте другое переменное использование SendEnv, посмотрите man ssh_config.
  • Сделайте свою подсказку из всех трех (два, всегда будет пустым),
  • Поместить AcceptEnv * в /etc/ssh/sshd_config и sudo kill -1 $(cat /var/run/sshd.pid)
    (AcceptEnv E1 E2 E3 должен также работать.)

Пример.

Клиент .ssh/config

Host barb
        HostName deb
        SendEnv BARB

Host jane
        HostName deb
        SendEnv JANE

Host deb barb jane
        Protocol 2
        ForwardAgent yes
        Compression no

Сервер .bashrc

PS1='$BARB$JANE.otherstuff...'

Сервер /etc/ssh/sshd_config

...
AcceptEnv *
4
ответ дан 3 December 2019 в 08:32
  • 1
    Я был бы озабочен приблизительно AcceptEnv * являющиеся проблемой безопасности. В любом случае " don' t открываются что Вы don' t need" применяется. –  Paused until further notice. 8 November 2009 в 02:48
  • 2
    Черт возьми я знал, что, должно быть, было что-то как SendEnv... нужно не забыть читать страницу справочника перед регистрацией :) Большой ответ. –  Cawflands 9 November 2009 в 16:18

Ваши домены все имеют различного дюйм/с?

Если так, можно использовать переменный $SSH_CONNECTION, после того как Вы зарегистрированы.

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

4
ответ дан 3 December 2019 в 08:32
  • 1
    нет - весь одинаковый IP.. they' домены довольно низкого трафика ре на этом сервере –  warren 7 November 2009 в 19:02

Один способ сделать это могло быть должно сделать записи для каждых из Ваших имен хостов в Вашем локальном ~/.ssh/config, настроенными для соединения с различными портами на сервере.

Host foo
  HostName www.foo.com
  Port 1022

Порт HostName www.bar.com панели хоста 2022

Затем Ваш ~/.bashrc на сервере может проанализировать переменную среды SSH_CONNECTION и выбрать порт, который Вы подключили с и изменяете подсказку соответственно.

case $(ruby -e 'puts ENV["SSH_CONNECTION"].split[-1]') in
  1022)
    WEBHOST="www.foo.com"
  ;;
  2022)
    WEBHOST="www.bar.com"
  ;;
  *)
    WEBHOST="www.foobar.com"
  ;;
esac

PS1 = "\n\u@ \w\n$ $WEBHOST?>"

Очевидно, Вам был бы нужен рубин в Вашем пути для этого, но Вы видите то, что я имею в виду.

4
ответ дан 3 December 2019 в 08:32
  • 1
    Или Вы могли сделать то же самое без ruby удар использования: sshconn=($SSH_CONNECTION); case "${sshconn[3]}" in –  Paused until further notice. 7 November 2009 в 21:54
  • 2
    хороший, аплодисменты :) –  Cawflands 9 November 2009 в 16:17

Вы смогли использовать SendEnv директива (протокол 2 требуется и sshd на удаленной машине, должна быть настроена, чтобы AcceptEnv включал название переменной, которую Вы хотите использовать):

На локальной машине:

export dest=example.com; ssh -o "SendEnv dest" username@$dest

На удаленной машине, в ~/.bashrc:

PS1="...${dest}..."

Где замещающие знаки представляют остальную часть материала в Вашей подсказке.

Если Вы редактируете /etc/ssh/sshd_config для добавления переменной, Вам, вероятно, придется отправить SIGHUP в sshd.

4
ответ дан 3 December 2019 в 08:32

Или, если Вы уже используете удар на этих доменах, редактируете .bashrc файл для добавления строки:

PS1 = '\u@\h:\w\$'

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

0
ответ дан 3 December 2019 в 08:32

Что вам нужно сделать, так это указать подсказку (PS1) с правильным именем хоста во время подключения к серверу. Предполагая, что вы используете ssh-клиент на машине Linux, вы можете сделать это, выполнив команду:

ssh -t username@hostname-001 "export PS1='\u@hostname-001'; bash --login"

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

function __ssh_helper {
    local user=$1
    local host=$2
    local txtgrn='\e[0;32m'
    local txtblu='\e[0;34m'
    local txtcyn='\e[0;36m'
    local txtrst='\e[0m'
    ssh -t ${user}@${host} "export PS1='[${txtcyn}\u${txtrst}@${txtgrn}${host}${txtrst} \W]\$ '; bash --login"
}

alias hostname-001.prod='__ssh_helper username hostname-001.prod'
alias hostname-002.prod='__ssh_helper username hostname-002.prod'

Я использовал файл / etc / hosts, чтобы указать hostname-00 (1 | 2) .prod на IP-адреса. Чтобы добавить новое соединение ssh: 1. добавьте имя хоста в файл / etc / hosts; 2. добавить псевдоним к .bashrc; 3. Получите изменения, используя файл .bashrc. Надеюсь, это кому-то поможет: -)

0
ответ дан 3 December 2019 в 08:32

Теги

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