Вы могли попытаться использовать команду "ожидания" Bash, чтобы записать, что немного обертки пишет сценарий Чего-то как:
#!/bin/bash
command=$*
$command &
wait
osd_cat "$command has finished"
Команда ожидания заставляет сценарий приостанавливаться, пока все дочерние процессы не возвратили код выхода. Вы могли также добавить немного тайм-аута, чтобы удостовериться, что Вы не ожидаете слишком долго
Так как этот был туннель, открытый в удаленном сервере, тому серверу нужно было установить GatewayPorts на да в его/etc/ssh/sshd_config.
В зависимости от каких, пользователей что сервер имеют Вас, мог бы хотеть использовать опцию Match ограничить ту возможность Вашим пользователем.
Match User middleuser
GatewayPorts yes
Действительно обратите внимание, что Вы, вероятно, хотите добавить этот блок Соответствия в конце Вашего sshd_config, так как блок Соответствия продолжается, пока другой не начинается, или концы файла.
Однако как насчет того, чтобы вместо этого пробовать то, что я рассмотрел бы немного более чистым решением?
user@local$ ssh -N -f -L 10002:behind_fw:22 middleuser@middle
user@local$ ssh remoteuser@localhost -p 10002
Принятие Вас использует OpenSSH, необходимо указать связывать адрес. Попробуйте что-то как:
ssh -N -f -R *:10002:localhost:22 middleuser@middle
или
ssh -N -f -R :10002:localhost:22 middleuser@middle
Подпись для-R:
-R [bind_address:]port:host:hostport
на OpenSSH. Из соображений безопасности это принимает значение по умолчанию к localhost, если Вы не указываете его. Вам, возможно, придется изменить GatewayPorts, чтобы заставить это работать в зависимости от Вашей конфигурации. См. SSH (1) для большего количества информации.
GatewayPorts clientspecified
, чтобы заставить ssh повиноваться Вашим заказам. См. serverfault.com/questions/379344/… – Tino 5 November 2014 в 06:46