Обратное соединение SCP через SSH

17

Мне довольно часто нужны файлы с какого-то сервера, когда я на своем ноутбуке. Но если я не знаю, где находится этот файл, я должен sshзайти на сервер, осмотреться exitи затем scp server:file .. Если я работаю со своим настольным компьютером и моим сервером, оба из которых имеют статические IP-адреса, я могу просто SCP-файл в reverse ( scp desktop:~ file), но я не могу сделать это для моего ноутбука. Есть ли какой-нибудь хороший способ SCP файл назад через SSH-соединение? Чтобы компьютер, к которому я подключаюсь по SSH, отправлял файл обратно клиенту?

pavpanchekha
источник
Почему бы не использовать mDNS?
Игнасио Васкес-Абрамс
1
Я считаю, что на этот вопрос уже правильно ответили здесь: unix.stackexchange.com/a/2869
shellster

Ответы:

20

Это было бы намного проще с SFTP, который является расширением SSH, который поддерживает более сложные файловые операции, чем SCP. Практически все современные дистрибутивы Unix и Linux поддерживают это. Чтобы использовать его, просто запустите эту команду для подключения к серверу:

sftp server

Затем вы можете использовать lsи cdкоманды , чтобы просмотреть вокруг и найти файл , который вы ищете. Как только вы нашли его, используйте getкоманду для его загрузки. Например, чтобы загрузить file.txtтекущий рабочий каталог на сервере в текущий рабочий каталог на локальном компьютере, просто запустите:

get file.txt

Чтобы загрузить /home/pavpanchekha/textfiles/file.txtна сервер ~/textfiles/на свой локальный компьютер, вместо этого запустите:

get /home/pavpanchekha/textfiles/file.txt ~/textfiles/

И наоборот, вы также можете загружать файлы таким образом. Чтобы загрузить file.txtиз текущего локального рабочего каталога в текущий рабочий каталог сервера, введите:

put file.txt

Вы также можете использовать полные пути для каждого, как вы можете с get:

put ~/textfiles/file.txt /home/pavpanchekha/textfiles/file.txt

Для получения полного списка доступных команд SFTP просто запустите helpв командной sftp>строке.

Патчи
источник
1
Это довольно круто, спасибо. Есть ли способ запустить один в обратном порядке, если я уже подключен по SSH? В противном случае я обнаруживаю, что где-то ssh'ing, понимая, что я хочу передать файл, выходя из SSH-соединения, делая SFTP-соединение, выходя из этого и возвращаясь к SSH.
Павпанчеха
2
@pav: SSH_CLIENTПеременная окружения содержит IP-адрес подключающегося хоста и другую информацию. Вы можете использовать это для создания псевдонима оболочки, чтобы легко возвращать SFTP к исходному хосту. Просто добавьте эту строку ~/.bashrcна сервере: alias sftpback="sftp $(echo $SSH_CLIENT | awk '{print $1}')" затем отключите и снова подключитесь к SSH, чтобы изменения вступили в силу, или выполните это, как если бы это была команда, чтобы она вступила в силу немедленно. С этого sftpbackмомента вы можете просто запустить SFTP обратно к клиенту, к которому вы подключаетесь, независимо от того, какой он есть.
Патчи
Это лучшее !!! Спасибо, что спасли меня от NANO (редактирование файла онлайн), это делает процесс таким простым.
Мохсин
0

Консольный файловый менеджер Midnight Commander (mc) имеет систему VFS, которая позволяет SFTP-соединению / управлению файлами удаленным серверам. Он также работает в Cygwin на Windows. Интерфейс по умолчанию показывает две независимые панели; мы могли бы открыть удаленный каталог SFTP в одном из них и легко передавать файлы в / из другой панели. Включает редактор файлов / просмотрщик (mcedit) с подсветкой синтаксиса.

Fjor
источник