Мне не нравится дважды называть scp.
Мне нужно подключиться к box1 через ssh снова к boxNAME. Как скопировать файл из boxNAME на локальный диск? также как мне скопировать файл с моего локального диска обратно в boxNAME?
в качестве альтернативы, если я могу взять файл (любой из них), вывести его и использовать в качестве стандартного ввода на другой стороне, это будет работать так же хорошо. (Файлы <4k и текстовые). Бонусный балл, если вы скажете мне, как создать текстовый документ и использовать stdout для записи и сохранения (помните, что это через 2 соединения, не локальных, и в этом случае я бы сделал файл cat >> out.txt)
Вы пробовали что-то подобное?
ssh user@host1 "ssh user@host2 'cat file.txt' " > local_file.txt
Я думаю, что самый простой способ - просто использовать переадресацию портов. Начните сеанс с промежуточным ящиком и перенаправьте некоторый порт, чтобы разрешить ssh-соединение с удаленным хостом. Затем просто используйте scp через свой порт вперед.
Если вам нужно делать это регулярно, вы можете создать конфигурацию ssh, использующую директиву ProxyCommand.
Host farhost
ProxyCommand /usr/bin/ssh username@intermediate "/bin/netcat -w 1 farhost 22"
User username
Учитывая что-то подобное, вы можете устанавливать соединения с удаленным хостом, как если бы он был подключен напрямую. Чтобы это работало наилучшим образом, вам нужно настроить аутентификацию на основе ключей.