SSH Config клиентской части

Posted: 2016-04-22 in IT, Security
Метки:,

Протокол SSH, второй версии которого в этом году исполнилось 20 лет, воистину прекрасен.
Про SSH я уже писал в блоге несколько заметок.

За прошедшие 20 лет он стал стандартом де-факто для обеспечения удаленного доступа / переноса файлов максимально простым и весьма безопасным способом. Некоторые виды шифров успели за это время стать теоретически менее безопасными, и это отразилось на реализации.

Иногда могут попадаться железки или системы, использующие старые шифры вкупе с очень старыми версиями протокола.

Тут на помощь нам приходит клиентский конфиг ~/.ssh/config, в котром мы можем указать явным образом, какие шифры предпочитать при коннекте к заданным серверам.
Пример:

[Amin@DobroHost ~]$ cat ~/.ssh/config
Host test-juniper1.company.local # ECDSA not supported, old JunOS !
HostkeyAlgorithms +ssh-rsa # стандартные асимм. шифры + RSA
KexAlgorithms +diffie-hellman-group1-sha1 # стандартные хэши + SHA1

Host test-cisco2.company.local
HostkeyAlgorithms ssh-rsa # ТОЛЬКО RSA и ничего другого
KexAlgorithms +diffie-hellman-group1-sha1 # ТОЛЬКО SHA1 и ничего другого

Host extreme-x460-48x.company.local
HostkeyAlgorithms ssh-dss # Только DSS
KexAlgorithms +diffie-hellman-group1-sha1

Host antiq-bsd.company.local # зело древняя FreeBSD
HostkeyAlgorithms ssh-dss
KexAlgorithms +diffie-hellman-group1-sha1

Ещё крутая возможность — использовать разные пары ключей для разных групп доступов.
Хороший ман — тут : http://wiki.dieg.info/ssh
Ключевые команды:

$ ssh-keygen -b 2048 -t rsa -f ~/.ssh/work_key -C "2K-Key for workstations"
$ ssh-keygen -b 8192 -t rsa -f ~/.ssh/myvps -C "8K-Key for vps/servers/VMs"
$ ssh-keygen -b 4096 -t rsa -f ~/.ssh/myrouters -C "4K-Key for routers/switches"

$ touch ~/.ssh/config
$ chmod 600 ~/.ssh/config

Генерим разные ключи, создаем конфиг. Прописываем маппинг ключей:

IdentityFile ~/.ssh/work_key
IdentityFile ~/.ssh/myvps
IdentityFile ~/.ssh/myrouters

Host *.company.org
IdentityFile ~/.ssh/work_key
User ws_backuper

Host 127.65.43.21
IdentityFile ~/.ssh/myvps
User vm_backuper
Port 2022

Это очень удобно, чтобы не набирать лишнее.

И ещё оно наблюдение. Сложные сценарии в /etc/ssh/sshrc могут не сработать. Причина в том, что этот самый sshrc всегда выполняется с помощью /bin/sh. А вот /bin/sh уже может быть собственно шеллом, а может быть симлинком на другой шелл. Если на bash — все прекрасно. А вот если на dash / csh / tcsh — то некоторые bash-специфичные конструкции не сработают. И первая строка с указанием шелла в /etc/ssh/sshrc демону SSHd не указ =)
Будьте внимательны с такими системами.

Ещё обнаружил интересный момент. Если из sshrc вывести что-то на экран командой echo, то интерактивный шелл работать будет, а вот скриптовое копирование с помощью sftp будет обламываться вот с такой ошибкой:

$ sftp -r server1.company.local:/tmp/test/* /tmp/1/
Received message too long 1416787315

Для motd и локального оповещения существуют отдельные конфиги ( /etc/motd, /etc/bash.bashrc ), их наличие работе sftp никак не мешает, в отличие от вывода текста из sshrc. Будьте внимательны.

Реклама

Обсуждение закрыто.