Какую команду терминала я могу использовать для переноса каталога с удаленного компьютера (linux) на мой локальный компьютер (mac)? Самое главное, я хотел бы сделать это из командной строки, когда SSH подключен к удаленной машине. Я знаю, как использовать SCP в командной строке моего локального компьютера, но я понятия не имею, как бы я использовал его с удаленного компьютера (и каков был бы мой локальный путь).
3 ответа
Запустите sshd
на локальном компьютере, если вы этого еще не сделали. Затем запустите второй сеанс с локального компьютера на удаленный компьютер:
ssh -R 2222:127.0.0.1:22 user@remote
Это перенаправляет удаленный порт 2222 на sshd
прослушивающий 127.0.0.1 на локальном компьютере, создавая reverse tunnel
. Затем запустите scp
на удаленном компьютере:
scp -P2222 file 127.0.0.1:/path/
Вы также можете сделать наоборот, чтобы получить файл с удаленного компьютера на локальный компьютер,
ssh -L 2222:user@192.168.1.37:22 user@remoteserver.com -N &
scp -P 2222 127.0.0.1:/path/to/file/on/remote/machine.diff /tmp
Команда ssh устанавливает туннель от localhost:2222 до удаленного компьютера 192.168.1.37 за сетевым сервером remoteserver.com. Вторая команда позволяет вам скопировать его локально.
Несколько хороших примеров и советов здесь, и как настроить это в ~/.ssh/config, чтобы автоматизировать это.
Если вы локально находитесь за маршрутизатором / брандмауэром, который предоставляет вам частный IP-адрес, вам необходимо настроить маршрутизатор на NAT-порт для сопоставления с вашим локальным портом 22. Затем вы можете получить к нему доступ с удаленного компьютера, указав свой общедоступный IP-адрес на любом выбранном вами порту (вы можете напрямую сопоставить порт 22, но я обычно лично рекомендую избегать этого, поскольку стандартные порты сервера являются общими целями для вредоносных программ, пытающихся найти выход в ).