Comments 23
Пожалуй один совет: Если у Вас множество серверов, то Ansible Вам в помощь и не нужно придумывать велосипед.
это может быть множество очень разных серверов очень разных проектов и людей, которые вот совсем не надо покрывать одним и тем же ансиблом
Разные сервера, разных проектов и людей — категорически не рекомендовал бы объединять bash_history
Прошу прощения, надо было явно указать, что я испльзую ssh для диагностики проблем, а не для ручного конфигурирования серверов.
- Не заметил нигде ничего про удаление ~/.ssh/control-socket-*. Не считаете это нужным или всё-таки как-то подчищаете за собой?
- "$ssh placeholder..." Какой сакральный смысл несёт placeholder? Теоретически, без этого тоже должно работать.
~/.ssh/control-socket-* подчищается автоматически ssh-ем.
placeholder нужен, без него не работает.
placeholder нужен, без него не работает.
~/.ssh/control-socket-* подчищается автоматически ssh-ем.В какой момент? Я пробовал — у меня не подчищается.
placeholder нужен, без него не работает.У меня работает. Где почитать про эту конструкцию?
В какой момент подчищается не знаю. Я на ubuntu 20.04, вот версия моего ssh:
OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f 31 Mar 2020
Про placeholder тоже не могу сказать ничего более определенного. На какой ОС вы пробуете и какая версия вашего ssh?
OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f 31 Mar 2020
Про placeholder тоже не могу сказать ничего более определенного. На какой ОС вы пробуете и какая версия вашего ssh?
OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f 31 Mar 2020
kvt@joy:~$ ll .ssh/
total 92
drwx------ 2 kvt kvt 4096 Nov 22 22:46 ./
drwxr-xr-x 36 kvt kvt 4096 Nov 22 22:47 ../
-rw-r--r-- 1 kvt kvt 73 Nov 21 2018 config
-rw------- 1 kvt kvt 3414 Nov 21 2018 id_rsa
-rw-r--r-- 1 kvt kvt 734 Nov 21 2018 id_rsa.pub
-rw------- 1 kvt kvt 36620 Nov 14 17:27 known_hosts
-rw------- 1 kvt kvt 34020 Jul 12 17:10 known_hosts.old
kvt@joy:~$ sshb rage.lan
kvt@rage ~ $ exit
exit
Shared connection to rage.lan closed.
kvt@joy:~$ ll .ssh/
total 92
drwx------ 2 kvt kvt 4096 Nov 23 23:32 ./
drwxr-xr-x 36 kvt kvt 4096 Nov 22 22:47 ../
-rw-r--r-- 1 kvt kvt 73 Nov 21 2018 config
-rw------- 1 kvt kvt 3414 Nov 21 2018 id_rsa
-rw-r--r-- 1 kvt kvt 734 Nov 21 2018 id_rsa.pub
-rw------- 1 kvt kvt 36620 Nov 14 17:27 known_hosts
-rw------- 1 kvt kvt 34020 Jul 12 17:10 known_hosts.old
kvt@joy:~$
При этом в другом терминале после коннекта к rage.lan я вижу:
kvt@joy:~$ ll .ssh/
total 92
drwx------ 2 kvt kvt 4096 Nov 23 23:33 ./
drwxr-xr-x 36 kvt kvt 4096 Nov 22 22:47 ../
-rw-r--r-- 1 kvt kvt 73 Nov 21 2018 config
srw------- 1 kvt kvt 0 Nov 23 23:33 control-socket-hPR2WOnd=
-rw------- 1 kvt kvt 3414 Nov 21 2018 id_rsa
-rw-r--r-- 1 kvt kvt 734 Nov 21 2018 id_rsa.pub
-rw------- 1 kvt kvt 36620 Nov 14 17:27 known_hosts
-rw------- 1 kvt kvt 34020 Jul 12 17:10 known_hosts.old
kvt@joy:~$
А почему не что-то в этом роде?
Соединение одно, будет один лишний bash на удаленной машине, но зато именно bash, а не dash/ksh
sshb() {
$ssh -fNM "$@" "curl -O http://mylocalserver/my_bashrc; ssh --rcfile ~/my_bashrc"
}
Соединение одно, будет один лишний bash на удаленной машине, но зато именно bash, а не dash/ksh
Прошу прощения, я не понял, что вы предлагаете. С опцией -N ssh не выполняет команды, только устанавливает соединение. Можно попросить вас пояснить ваше предложение?
тогда без опции N
предлагал просто положить bashrc на доступный всем сервер.
После подключения первым делом скачивать его на удаленную машину уже на ней, и запускать еще один bash уже с этим профайлом. Таким образом не нужно делать два подключения (для копирования конфига и подключения с конфигом)
предлагал просто положить bashrc на доступный всем сервер.
После подключения первым делом скачивать его на удаленную машину уже на ней, и запускать еще один bash уже с этим профайлом. Таким образом не нужно делать два подключения (для копирования конфига и подключения с конфигом)
Если мы установили ssh соединение (которое мультиплексировано, так что 2-х подключений не происходит, я отметил это в статье), то мы гарантированно можем переслать конфигурацию с локальной машины. Если мы подгружаем конфигурацию откуда-то еще, то гарантии успешной скачки нет.
Но если для вас такой вариант удобнее, то его безусловно можно использовать.
Но если для вас такой вариант удобнее, то его безусловно можно использовать.
ssh -S ~/.ssh/control-socket-$(tr -cd '[:alnum:]' < /dev/urandom|head -c8)По-моему, так проще и нагляднее:
$ grep -iE '^[^#]*control' .ssh/config
ControlMaster auto
ControlPersist 5
ControlPath ~/.ssh/ssh_mux_%h_%p_%r
Если мы делаем настройки будущих ssh-сессий, то давайте это делать в конфиге клиента ssh, а не разбрасывать по всем возможным файлам инициализирующим наш профиль.
а с putty есть вариант?
Сюда бы еще и свой .vimrc прикрутить в комплекте :)
Это абсолютно реально сделать. Просто добавьте вот эту строчку
перед запуском интерактивного баша.
$ssh placeholder "cat >~/.vimrc" < .vimrc
перед запуском интерактивного баша.
Если я правильно понял то как-то так? Но у меня не сработало.
sshb() {
local ssh="ssh -S ~/.ssh/control-socket-$(tr -cd '[:alnum:]' < /dev/urandom|head -c8)"
$ssh -fNM "$@"
$ssh placeholder "cat >~/.bash-ssh" <~/.bashrc
$ssh placeholder "cat >~/.vimrc" < .vimrc
$ssh "$@" -t 'SHELL=~/.bash-ssh; chmod +x $SHELL; bash --rcfile $SHELL -i'
$ssh placeholder -O exit >/dev/null 2>&1
}
Сложновато. Но интересно. Спасибо. Сам пользовать не буду из за сложности, я попсарь. Но иногда хороший джаз в хорошем исполнении замечательно ложится. ;-))
Sign up to leave a comment.
Использование локального .bashrc через ssh и консолидация истории выполнения команд