Secure Shell (SSH) имеет много хитростей в своем арсенале.
Благодаря большому количеству параметров конфигурации вы можете заставить как демон SSH, так и клиент делать практически все, что вам нужно.
Большинство пользователей заканчивают свою конфигурацию SSH файлами sshd_config и ssh_config.
Однако есть еще один файл конфигурации, который придает инструменту гораздо большую гибкость.
Этот файл конфигурации ~/.ssh/config.
В этом файле вы можете настроить SSH для каждого хоста.
Это означает, что вы можете настроить разные хосты так, чтобы они вели себя по-разному.
Например, если вы хотите настроить один конкретный хост с именем пользователя, ключом SSH, включенным пакетным режимом (который говорит SSH никогда не запрашивать ключевую фразу или пароль) и отключенной escape sequence (что позволяет избежать проблем при передаче произвольных данных).
Скажем, другая конфигурация будет использовать определенного пользователя для любого хоста в определенном домене или схеме IP-адресов.
С помощью конфигурационного файла SSH это и многое другое может быть реализовано.
Что вам нужно
Единственное, что вам нужно, чтобы сделать эту работу:
- Linux-машина с установленным SSH
- Любое количество удаленных машин, которые разрешают соединения SSH
Как настроить хосты
Мы будем придерживаться примеров, которые я предложил ранее.
Итак, наш первый хост:
- Установим имя пользователя
- Укажем ключ SSH
- Включим пакетный режим
- Отключим escape sequence
- Установим имя пользователя
- Включим имя пользователя для всех хостов в определенной сети
nano ~/.ssh/config
Host Debian HostName 10.34.1.40 User jack IdentityFile ~/.ssh/id_rsa.pub BatchMode yes EscapeChar none
ssh-copy-id USERNAME@SERVER_IP
Где USERNAME – удаленный пользователь, а SERVER_IP – IP-адрес удаленного сервера.
После того, как вы позаботились об аутентификации по ключу SSH, вы можете подключиться к хосту Debian с помощью команды:
ssh Debian
Вас не спросят адрес или пароль.
Связь почти мгновенная.
Далее, давайте настроим имя пользователя, которое будет использоваться на любом компьютере в данной сети.
Скажем, имя пользователя – jack, а схема сетевого адреса – 192.168.1.0.
Эта конфигурация (опять же, в файле .ssh/config) будет такой:
Host 192.168.1.* User jack
Сохраните и закройте файл.
Если вы хотите подключиться к SSH к любому компьютеру в этой сети (по имени пользователя jack по умолчанию), вы можете просто выполнить команду:
ssh SERVER_IP
Где SERVER_IP – это IP-адрес удаленного сервера. Пока этот сервер использует адресную схему 192.168.1.x, он не будет запрашивать имя пользователя.
И это основы настройки SSH для каждого хоста.
Вы можете узнать больше об этом типе установки, выполнив команду:
man ssh_config