Это оказывается этим 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 *
Ваши домены все имеют различного дюйм/с?
Если так, можно использовать переменный $SSH_CONNECTION, после того как Вы зарегистрированы.
В противном случае затем невозможно дифференцироваться, весь сервер видит, IP-адрес, нет такой вещи как основанный на имени ssh.
Один способ сделать это могло быть должно сделать записи для каждых из Ваших имен хостов в Вашем локальном ~/.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?>"
Очевидно, Вам был бы нужен рубин в Вашем пути для этого, но Вы видите то, что я имею в виду.
ruby
удар использования: sshconn=($SSH_CONNECTION); case "${sshconn[3]}" in
– Paused until further notice.
7 November 2009 в 21:54
Вы смогли использовать SendEnv
директива (протокол 2 требуется и sshd на удаленной машине, должна быть настроена, чтобы AcceptEnv включал название переменной, которую Вы хотите использовать):
На локальной машине:
export dest=example.com; ssh -o "SendEnv dest" username@$dest
На удаленной машине, в ~/.bashrc:
PS1="...${dest}..."
Где замещающие знаки представляют остальную часть материала в Вашей подсказке.
Если Вы редактируете /etc/ssh/sshd_config
для добавления переменной, Вам, вероятно, придется отправить SIGHUP в sshd
.
Что вам нужно сделать, так это указать подсказку (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. Надеюсь, это кому-то поможет: -)
AcceptEnv *
являющиеся проблемой безопасности. В любом случае " don' t открываются что Вы don' t need" применяется. – Paused until further notice. 8 November 2009 в 02:48