#Что происходит и когда это важно
Команда вида ssh -J jump target завершается timeout/Permission denied/administratively prohibited, хотя обычный вход на jump возможен.
#Возможные причины и как их отличить
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Недоступен jump-хостПервое SSH-соединение не создаётся. | Прямой ssh к jump не работает. | Диагностировать DNS, порт и ключ первого узла. |
| Промежуточный узел не видит цельХост bastion недоступен внутреннему серверу по сети. | Первый SSH работает, второй даёт timeout/connection refused. | Проверить разрешённую маршрутизацию от jump. |
| На bastion запрещён TCP forwardingsshd запрещает требуемый пересылку соединения. | В ошибке есть administratively prohibited. | Обратиться к администратору, не обходить ограничение. |
| Перепутаны ключиДля bastion и target нужны разные IdentityFile. | На одном из этапов Permission denied (publickey). | Разнести конфигурации Host. |
#Пошаговая диагностика и исправление
- Запишите оба имени и полномочияНа локальном клиенте откройте терминал. Получите у администратора адрес и разрешённый логин для bastion и целевого сервера. Не пытайтесь просканировать внутреннюю сеть, если доступ не согласован.
- Проверьте первый переход самостоятельноВыполните
ssh пользователь_бастиона@bastion.example.org, заменив пример настоящим адресом. Если он не работает, ProxyJump не поможет: проверьте подключение к VPN и ключ именно bastion. - Уточните адрес цели с точки зрения бастионаВ согласованном сеансе на bastion спросите у администратора, как внутренний сервер называется именно в той сети. Внутренний DNS может не разрешаться с вашего ПК, но будет доступен бастиону. Не подключайтесь к IP, который не согласован.
- Запустите подробный тест ProxyJumpНа клиенте выполните
ssh -v -J пользователь_бастиона@bastion.example.org пользователь_цели@internal.example.org, заменив все данные. В строках ищите, на каком переходе возникает отказ. Не публикуйте пароли, ключи или внутренние адреса вместе с выводом. - Разделите отказ forwarding и аутентификацииЕсли сообщение
administratively prohibited, это политика AllowTcpForwarding/PermitOpen на бастионе; исправляет владелец, не пользователь. Если Permission denied (publickey), уточните, какой из двух серверов требует ключ и в какой учётной записи. - Проверьте отдельные настройки HostОткройте
~/.ssh/configв текстовом редакторе. Используйте разные блокиHost bastionиHost internal, с ихHostName,User,IdentityFileиProxyJump bastionтолько для internal. После сохранения выполнитеssh -G internal, сравните итоговые значения; не добавляйте глобальный ProxyJump ко всем хостам. - Сверьте результат и откатПодключитесь к internal по алиасу только после проверки отпечатков ключей обоих серверов. Если не работает, удалите добавленный блок или верните копию config и обратитесь к администратору с конкретным этапом ошибки.
#Команды из инструкции с пояснениями
Linux · Терминал (Bash)Команда
Пример синтаксиса с демонстрационными адресами, заменить перед запуском.
ssh -v -J пользователь_бастиона@bastion.example.org пользователь_цели@internal.example.orgLinux · Терминал (Bash)Команда
Клиент: итоговая конфигурация алиаса internal после его создания.
ssh -G internal#Как проверить результат
Клиент проверяет оба host key, проходит в целевую учётную запись через разрешённый bastion без отключения проверки SSH.
#Если проблема не устранена
Если сеть и ключи исправны, но forwarding запрещён, запросите разрешённый метод доступа у администратора вместо обходных туннелей.