Я пытаюсь скопировать файл с 10.10.10.99:/home/shantanu/ на локальный хост. Проблема только в том, что мне нужно через 10.10.10.98 туннелировать соединение как то не получается ....
ssh shantanu@10.10.10.98 "ssh shantanu@10.10.10.99 cp /home/shantanu/test.txt . "
Слишком запутан поток «ssh-туннель через несколько переходов».
https://superuser.com/questions/96489/ssh-tunnel-via-multiple-hops
Не используйте "cp" для копирования файлов между хостами с поддержкой SSH, используйте scp. Что-то вроде этого должно быть достаточно для ваших нужд прямо сейчас:
ssh -f shantanu@10.10.10.98 -L 41111:10.10.10.99:22 -N
scp -P 41111 shantanu@localhost:/home/shantanu/test.txt .
Следует отметить, что первая команда создает туннель (доступный только с вашего локального хоста, но все же), который вы можете захотеть закрыть после передачи файлов. Или оставьте его открытым, это не представляет большого риска для безопасности, так как вам все равно придется авторизоваться на втором хосте, чтобы использовать его.
Просто направьте локальный файл через цепочку каналов SSH в его конечный пункт назначения:
ssh shantanu@10.10.10.98 "ssh shantanu@10.10.10.99 'cat >test.txt'" </home/shantanu/test.txt
Единственная сложная часть может заключаться в двойных кавычках, необходимых для выполнения перенаправления оболочки на целевой машине.
(Не имеет прямого отношения к этому, но ..) вы также можете создать обратный туннель SSH.
на удаленном сервере:
ssh -fN -R 7000:localhost:22 username@yourMachine-ipaddress
Теперь сделайте запрос на ssh-соединение с вашего компьютера на ваш собственный через порт 7000:
ssh username@localhost -p 7000