Может быть, вам стоит попробовать добавить первый запуск после загрузки, например:
[Timer]
OnBootSec = 15min {{ 1}} OnUnitActiveSec = 2m
добавьте это в свой ~ .ssh / config:
Host BviaA
HostName hostB
ProxyCommand ssh user@hostA nc %h %p 2> /dev/null
Тогда ssh -X user @ BviaA
должен работать
Обратите внимание, что в разделе конфигурации выше я использовал Host BviaA
, чтобы было более очевидно, что происходит. Вы также можете использовать Host hostB
, чтобы он работал полностью прозрачно: ssh -X user @ hostB
(Как будто шлюз не нужен.)
Альтернативно как однострочный вариант для тестирование без каких-либо изменений конфигурации:
ssh -X -oProxyCommand="ssh user@hostA nc %h %p" user@hostB
Вы можете перенаправить порт через A. Используйте
$ ssh -Nf -L2222:B:22 A
, чтобы запустить и фоновый процесс ssh, который будет перенаправлять с вашего локального компьютера на B через A. Затем подключитесь к B, используя
$ ssh -p 2222 -X localhost
Большое спасибо @rudimeier за ответ.
У меня была проблема с опцией nc при использовании ssh, но этот вариант (, основанный на том, что @aDroid объяснил здесь ), у меня работал. Так что это, по сути, тот же один -линейный ответ @rudimeier для более новых версий OpenSSH:
$ ssh -X -oProxyCommand="ssh userA@host.address.A -W %h:%p" userB@host.address.B
@user4556274 ответ у меня тоже сработал (спасибо и вам ).
Я просто добавил бы имена пользователей на обоих этапах, чтобы объяснить, как это работает для новичков вроде меня (после ввода 1-й команды порт 2222 локального хоста будет вести себя так, как если бы это был порт 22 на машине B; поэтому во второй команде мы передаем имя пользователя машины B):
$ ssh -Nf -L2222:host.address.B:22 userA@host.address.A
$ ssh -p 2222 -X userB@localhost