Настройка SSH
Содержание
Настройки клиента
Для настройки используемых по умолчанию SSH-ключей и имён пользователей, используемых по умолчанию для подключения к удалённым системам, можно прописать в файл ~/.ssh/config настройки следующего вида:
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes
KexAlgorithms +diffie-hellman-group1-sha1
PubkeyAcceptedKeyTypes +ssh-rsa
HostkeyAlgorithms +ssh-dss,ssh-rsa
Host server1.domain.tld
User user1
ProxyJump server2.domain.tld
Host server2.domain.tld
Hostname server3.domain.tld
DynamicForward 127.0.0.1:4444
Опция AddKeysToAgent
включает автоматический запуск SSH-агента при попытке подключиться к удалённому узлу по SSH и добавление ключей в агента. Можно указать время, на которое ключ будет добавляться в агента, в виде 9h - 9 часов.
Опция IdentityFile
указывает приватный SSH-ключ, который будет использоваться для аутентификации на удалённых узлах SSH.
Опция ForwardAgent
разрешает запуск SSH-агента на удалённом узле, так что приватный ключ может использоваться для входа с этого удалённого узла на другие узлы.
Опция User
позволяет указать имя пользователя, которое будет использоваться в качестве значения по умолчанию, которое совпадает с именем текущего пользователя.
Опция ProxyJump
позволяет указать другой SSH-узел, через который будет установлено подключение к интересующему узлу. Полезно, если интересующий узел находится за NAT-сервером внутри сети или если это виртуальная машина, доступная только с сервера виртуализации.
Опция Hostname
позволяет указать настоящее имя сервера или его IP-адрес, отличный от имени, указанного SSH-клиенту.
Опция DynamicForward
позволяет использовать удалённый узел в качестве SOCKS4-прокси, который будет принимать подключения на указанном интерфейсе и порту локальной системы.
Опция KexAlgorithms
может пригодиться для настройки списка допустимых алгоритмов обмена ключами. В приведённмо выше примере к разрешённым алгоритмам добавляется алгоритм DH-GROUP1-SHA1, который устарел в Debian Stretch.
Опция PubkeyAcceptedKeyTypes
может пригодиться для настройки списка допустимых алгоритмов проверки подлинности удалённых узлов. В приведённом выше примере к разрешённым алгоритмам добавляется алгоритм RSA, который устарел в Debian Bookworm.
Опция HostkeyAlgorithms
может пригодиться для настройки списка допустимых алгоритмов для аутентификации на удалённом узле. В приведённом выше примере к разрешённым алгоритмам добавляются алгоритмы DSS и RSA, которые устарели в Debian Stretch и Bookworm соответственно.
SSH как прокси
SOCKS проксирование
Установите SSH-соединение командой в вашем SSH-клиенте
ssh -D localhost:12345 ваше_имя@адрес_удаленного_компьютера
Опция -D адрес:порт задает туннелирование порта. Ее работа заключается в том, что создается сокет для прослушивания порта на локальной машине, привязанный (необязательно) к конкретному адресу. Когда создается соединение к этому порту, это соединение туннелируется по зашифрованному каналу, и протокол приложения затем используется, чтобы определить, куда соединяться с удаленной машиной. При этом SSH работает как SOCKS сервер (поддерживается 4 и 5 версии протокола).
Переброс локального порта на удаленную машину
Возможно также переадресовывать все соединения на локальный порт через защищенный туннель на удаленную машину. Команда имеет вид:
ssh -L [локальный_адрес:]локальный_порт:удаленный_адрес:удаленный_порт [пользователь@]сервер
После этого все соединения на локальный_адрес:локальный_порт
будут переадресовываться удаленному серверу, который будет соединяться с удаленный_адрес:удаленный_порт
от своего имени. По умолчанию локальный_адрес
соответствует 127.0.0.1. Возможно использование нескольких ключей -L в одном клиенте.
Переброс удаленного порта на локальную машину
Для совершения обратного действия нужно выполнить команду с ключом -R:
ssh -R [удаленный_адрес:]удаленный_порт:локальный_адрес:локальный_порт [пользователь@]сервер
Команда работает также как и в вышеописанном случае только соединения перебрасываются с удаленной машины на локальную.
Проблема с повышением требований к безопасности SSH
После обновления Debian Wheezy до Debian Stretch стало невозможно подключиться к некоторым устройствам по SSH. Проблема в том, что в Stretch ужесточены требования к безопасности подключений SSH.
При попытке подключиться по SSH к некоторым узлам происходит ошибка:
$ /usr/bin/ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no cuservice@10.16.0.101
Unable to negotiate with 10.16.0.101 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
Для того, чтобы разрешить SSH-клиенту использовать указанный метод обмена ключами, нужно вписать в файл /etc/ssh/ssh_config одну дополнительную строчку:
KexAlgorithms +diffie-hellman-group1-sha1
Аналогичная проблема:
Unable to negotiate with 10.16.0.101 port 22: no matching host key type found. Their offer: ssh-dss
$ /usr/bin/ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no cuservice@10.16.0.101
Решается схожим образом, с той лишь разницей, что добавить нужно другую строчку, разрешающую использовать ключи узлов указанного типа:
HostKeyAlgorithms +ssh-dss
После обновления с Debian Bullseye до Debian Bookworm стало невозможно подключиться по SSH к некоторым серверам. Проблема в том, что в Bookworm ужесточены требования к безопасности подключений SSH. Для решения проблем будет достаточно разрешить использование алгоритма RSA для проверки подлинности узлов и пользователей:
PubkeyAcceptedKeyTypes +ssh-rsa
HostkeyAlgorithms +ssh-rsa
Установка программы для запроса паролей через графический интерфейс
# apt-get install ssh-askpass-gnome