The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Автодополнение ssh-хостов в командн..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Автодополнение ssh-хостов в командн..."  +1 +/
Сообщение от auto_tips on 14-Апр-10, 11:44 
Простейшим способом упрощения набора параметров для частоиспользуемых хостов является задание псевдонимов в ~/.ssh/config:

   Host        myhost      # Имя хоста
   HostName    server.com  # Это удаленнй хост
   User        username    # Пользователь на удаленном хосте
   Port        22222       # Номер порта

При этом вместо "ssh -p 22222 -l username server.com" теперь достаточно написать "ssh myhost".

В случае когда этого недостаточно и хочется получить в bash поддержку автодополнения типовых имен хостов можно добавить в ~/.bashrc или ~/.profile следующие конструкции.

При поиске имен среди параметров Host и HostName в ~/.ssh/config:

   complete -W "$(echo `cat ~/.ssh/config | grep -iE '^(Host|HostName) ' | awk '{print $2}'`)" ssh


Обычно в дистрибутивах Linux уже присутствует настройка (/etc/bash_completion) для автодополнения по содержимому файла known_hosts, но в последних версиях OpenSSH имена хостов в данном файле перестали задаваться в открытом виде, поэтому автодополнение не работает. Тем не менее хэширование имен можно отключить указав в ssh_config "HashKnownHosts no".

Для поиска по known_hosts может быть использована конструкция:

   complete -W "$(echo `cat ~/.ssh/known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | uniq | grep -v "\["`;)" ssh


Более развернутый пример запроса для организации автодополнения по содержимому первого столбца произвольного файла my_hosts.txt:

   _compssh ()
   {
   cur=${COMP_WORDS[COMP_CWORD]};
   COMPREPLY=($(compgen -W '$(cut -d " " -f1 ~/my_hosts.txt) --all --schema' -- $cur))
   }
   complete -F _compssh ssh


URL: http://bthemad.wordpress.com/2010/03/31/ssh-host-autocompletion/
Обсуждается: http://www.opennet.ru/tips/info/2340.shtml

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от log1301 on 14-Апр-10, 11:44 
полезно, спасибо
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от McLeod095 (ok) on 14-Апр-10, 14:17 
Т.к. я люблю использовать в качестве разделителей символы табуляции то строка
cat ~/.ssh/config | grep -iE '^(Host|HostName) ' | awk '{print $2}'
мне ровным счетом ничего не выводила. Пришлось переделать вот так
cat ~/.ssh/config | awk '/^(Host|Hostname)/{print $2}'
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от тигар (ok) on 14-Апр-10, 15:49 
эммм... а можно подробнее про "в последних версиях
OpenSSH имена хостов в данном файле перестали задаваться в открытом виде" ?

OpenSSH_5.4p1 FreeBSD-20100308, OpenSSL 0.9.8n 24 Mar 2010
по-прежнему все нормально с known_hosts
кусочек .cshrc:

if ( -r $HOME/.ssh/known_hosts ) then
     set hosts=`cat $HOME/.ssh/known_hosts | cut -f 1 -d \ | sed -e 's/,/ /g'` >& /dev/null
endif

complete ssh 'p/1/$hosts/' 'p/2/c/'

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от hostmaster (??) on 15-Апр-10, 00:12 
http://www.vitalvector.com/blog/2009/02/ssh-tip-hash-known-h...
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от тигар (ok) on 15-Апр-10, 10:08 
т.е фразу которую я процитировал выше можно перефразировать как "если Ваша паранойа Вам не дает покоя то Вы можете включить HashKnownHosts и приделать такой вот костыль к shell`у". Так?
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от Michael Shigorin email(ok) on 17-Апр-10, 12:40 
При чём тут покойя, это хэширование -- штука полезная.  А к нормальному zsh (к дебиановскому не относится, в альте собран прилично) и приделывать ничего не надо, и так tab'ит.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

10. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от тигар (ok) on 17-Апр-10, 12:54 
что полезного дает это хеширование?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "Раздел полезных советов: Автодополнение ssh-хостов в командн..."  +/
Сообщение от McLeod095 (ok) on 15-Апр-10, 11:44 
В итоге посмотрев на строку поиска пришел к вот такому варианту

complete -W "$(awk 'BEGIN{IGNORECASE=1} /^(Host|Hostname)/{print $2}' ~/.ssh/config)" ssh

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от vayerx (ok) on 16-Апр-10, 12:21 
В итоге посмотрев на строку поиска пришел к вот такому варианту:

complete -W "$(awk 'BEGIN{IGNORECASE=1} /^(Host|Hostname)\W[^*?]+$/{print $2}' ~/.ssh/config)" ssh

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от anonymous (??) on 16-Апр-10, 23:19 
Я бы лучше сделал так:
complete -W "$([ -r ~/.ssh/config ] && echo `awk '/^Host/ {print $2}' ~/.ssh/config`)" ssh
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

11. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от universite email(ok) on 19-Апр-10, 06:21 
Извращенцы!!!
man alias
man hosts
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

12. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от Мимопроходил on 25-Апр-10, 00:56 
А что сделаешь если удаленный шелл крутиться на кастомном порту? :)
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

13. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от universite email(ok) on 25-Апр-10, 22:10 
>А что сделаешь если удаленный шелл крутиться на кастомном порту? :)

alias ssh_server "ssh -p 22222 -l username server.com"

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

15. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от Michael Shigorin email(ok) on 26-Апр-10, 16:15 
>>А что сделаешь если удаленный шелл крутиться на кастомном порту? :)
>alias ssh_server "ssh -p 22222 -l username server.com"

Лучше в ~/.ssh/config оформить:

Host ssh_server
    HostName server.com
    Port 22222
    User username
    # можно ещё HostKeyAlias ssh_server, если там несколько sshd по портам видно

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

16. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от universite email(ok) on 26-Апр-10, 22:53 
>[оверквотинг удален]
>>alias ssh_server "ssh -p 22222 -l username server.com"
>
>Лучше в ~/.ssh/config оформить:
>
>Host ssh_server
>    HostName server.com
>    Port 22222
>    User username
>    # можно ещё HostKeyAlias ssh_server, если там несколько
>sshd по портам видно

Хорошо. Уговорили :)

а как тогда приватные ключи подставлять для каждого соединения?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

17. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от Michael Shigorin email(ok) on 01-Май-10, 00:12 
>а как тогда приватные ключи подставлять для каждого соединения?

man ssh_config
/IdentityFile

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

14. "Автодополнение ssh-хостов в командной строке"  +/
Сообщение от vayerx (ok) on 26-Апр-10, 01:28 
и в скриптах тоже?
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру