Muszę skonfigurować kilka tuneli ssh ze skryptu powłoki. Próbowałem uruchomić je jako zadania bg, używając:
#!/bin/sh
ssh -L 3000:server1:5029 me@server2 &
ssh -L 3001:server3:3306 me@server2 &
ale tunele nie działają poprawnie, gdy uruchamiam je w ten sposób.
Działają dobrze, gdy ręcznie ustawiam je na własnych kartach, więc moim następnym pomysłem jest, aby skrypt otworzył nowe karty w Terminalu i uruchomił tam polecenia jako procesy na pierwszym planie.
Uwaga: to pytanie było pierwotnie „Jak uruchomić nową kartę terminala z powłoki, a następnie uruchomić w niej polecenie?”, ale mam dwie odpowiedzi na temat radzenia sobie z tunelami. Dla pytania „otwieranie powłoki” znalazłem to na SuperUser , która będzie działać, chociaż nowe karty w tle byłyby lepsze niż okna pierwszego planu, które otwiera.
command-line
tunnel
sprugman
źródło
źródło
Odpowiedzi:
Nie jest to technicznie odpowiedź na zadane pytanie, ale raczej odpowiedź na opisany problem. Komenda ssh ma dwa przełączniki, które mogą być przydatne:
nakazuje ssh trzymać się na pierwszym planie wystarczająco długo, aby poprosić o niezbędne hasła, a następnie umieścić się w tle, nie wykonując żadnego polecenia zdalnego, ale po prostu obsługując tunel.
Jeśli naprawdę chcesz, aby pojawiło się to na karcie, możesz chcieć innego rozwiązania.
źródło
jobs
anips
wymienia uchwyt do nich ....-f
i tło procesu za pośrednictwem&
na końcu możesz uzyskać PID przez$!
jako uchwyt do zabicia procesu tunelowego później w skrypcie.Sugerowałbym po prostu zintegrowanie tuneli z twoim połączeniem „jedno na wszystko”. Możesz to ułatwić, dodając odpowiednie wpisy do swojego
~/.ssh/config
plik:Następnie możesz po prostu zalogować się, uruchamiając:
Tunele powinny się pojawić i zacząć działać, pozostawiając pojedynczą instancję SSH, w której można wykonać „cokolwiek”. Jeśli chcesz otworzyć drugie połączenie z
server2
, może pojawić się błąd:To nie boli niczego poza twoimi oczami. Możesz również skonfigurować te przekazy dla wielu serwerów, dodając podobne linie dla innych serwerów i wszystko to stanie się automatycznie.
źródło