1) Узнать скорость соединения между хостами:
$ yes | рv | ssh host.com "cat > /dev/null"
PS. Для этого нужно установить утилиту pv
2) Удобный анализ tcpdump трафика:
$ ssh root@remotehost tcpdump -w - 'port !22' | wireshark -k -i -
этим мы анализируем дамп на хосте remotehost.
3) Запуск команды на нескольких серверах
$ echo "uptime" | pee "ssh host1" "ssh host2" "ssh host3"
4) Сравнение файлов на разных серверах:
$ diff <(ssh host1 cat /path/to/file1) <(ssh host2 cat /path/to/file2)
5) Просмотр логов в realtime с разных серверов:
$ multitail -l 'ssh host1 "tail -f /path/to/log1"' -l 'ssh host2 "tail -f /path/to/log2"'
6) Установка пакетов удалённой машины:
# ssh remotehost 'dpkg --get-selections' | dpkg --set-selections && dselect install
7) Выполнение скрипта на удалённой машине без его копирования на онную.
$ ssh -Т user@remotehost < script.sh
8 ) Создание туннеля
В /etc/ssh/sshd_config выставляем такие значения
PermitRootLogin yes
PermitTunnel yes
Перечитываем конфиг на сервере. На клиенте запускаем команду
$ssh -w 0:0 root@remote_host
Этим мы создадим туннель tun0 как на клиенте, так и на сервере. Дальше нужно задать IP-адреса на клиенте (первая команда) и на сервере (вторая команда) соответственно:
#ifconfig tun0 10.0.0.2 pointopoint 10.0.0.1
#ifconfig tun0 10.0.0.1 pointopoint 10.0.0.2
Дальше можно настраивать маршрутизацию.
PS Многое почерпнул из журнала Хакер.
2 коментарі “[shell] Разные трюки с ssh”
Ооох :))) Респект, коллега 🙂 П. 4 и 5 часто использую, но вот такой вариант в голову не приходил :))
PS: Ну раз в п.1 написано, что надо ставить, то не помешает добавить: 😉
Для п.3 в Debian/Ubuntu нужно поставить пакет moreutils, для RedHat/CentOS, если не ошибаюсь, – perl-List-MoreUtils.
Д п.5 нужен пакет multitail (в deb и rpm одинаково называется).
ЗЫ: Утащил к себе, дабы не забыть 🙂
ЗЫЫ: Надеюсь не против 😉