Автодополнение имён хостов из LAN в консоли

Мне по работе часто приходится подключаться к машинам в локальной сети через SSH. Некоторые IP-адреса запоминаются, но всё же чертовки удобно, когда для такой банальной вещи, как имена локальных машин, работает автодополнение.

В принципе, имена хостов часто несложно получить с помощью Avahi (avahi-browse). Странно — думал я, — почему до сих пор никто не догадался сделать это в bash_completion?

Но оказалось, что всё гораздо хитрее. Автодополнение с помощью avahi-browse было реализовано в bash_completion, но начиная с какой-то версии было убрано из-за жалоб пользователей (действительно, когда в локалке слишком много машин, автодополнение начинает тормозить).

Это оказалось довольно легко исправить! В файле /usr/share/bash-completion/bash_completion надо раскомментировать часть функции _known_hosts_real(), отвечающую за Avahi (ищется текстовым редактором). Далее дописываем export COMP_KNOWN_HOSTS_WITH_AVAHI=1 в свой .bashrc и радуемся жизни. (Ах да, не забываем установить avahi-browse, который лежит в пакете avahi-utils в Debian).

rssh, или Как разрешить SCP, но запретить SSH

Вполне адекватная ситуация: у вас есть удалённая Linux-машина с доступом по SSH, и вам срочно нужно дать кому-то из знакомых возможность загрузить на эту машину файл. Разумеется, нам абсолютно лениво разворачивать ради этого FTP-сервер. Да и зачем, когда есть SCP?

Вот только незадача: нам не хочется, чтобы этот знакомый имел возможность что-то делать на этой машине. Ну мало ли что. Поэтому для начала мы заводим отдельного пользователя, ставим для него домашней директорией место, куда надо залить файл, ограничиваем доступ этого пользователя к окружающим директориям. Но всё-таки этот пользователь пока имеет доступ к Shell, а нам — опытным паранойикам — это вообще не нравится.

Выход вроде как всплывает: надо заменить пользователю shell по умолчанию (/bin/sh) на что-нибудь другое. Вот только что?

Подробнееrssh, или Как разрешить SCP, но запретить SSH