Я знаю, как использовать scp или wget для загрузки файла с удаленного сервера на мою локальную машину. Однако, если я уже вошел на сервер с помощью ssh, есть ли команда, позволяющая мне загрузить файл в pwd на сервере на мою локальную машину?
Я полагаю, что могу использовать scp, но моя локальная машина обычно находится за маршрутизатором. Придется ли мне открывать порт в роутере?
Вам нужно ответить, почему вы не хотите снова входить в систему ... если вы вошли в систему один раз, вы можете войти дважды ... особенно если вы потратили три минуты на создание ключа и удаленное сохранение ключа :
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
2b:4c:11:ab:53:d1:15:90:4f:88:a1:42:da:c5:1c:98 user@localhost
$ ssh-copy-id user@remotehost
Warning: Permanently added 'remotehost' (RSA) to the list of known hosts.
Password:
$ ssh user@remotehost
Last login: Mon Dec 14 21:52:45 2009 from 1.2.3.4
[user@remotehost] $
В те времена, когда TCP / IP не стал обычным явлением, люди использовали для этого кладжи, такие как X / Modem. В настоящее время использовать это довольно глупо.
Это немного архаично, но вы можете использовать что-то вроде kermit для использования протокола эпохи модемов (zmodem и т. Д.). Похоже, есть программа предназначено только для этой цели.
Однажды мне нужно было загрузить небольшой файл с удаленного unix-сервера без каких-либо вспомогательных инструментов, поэтому я закодировал файл, сбросил его с помощью cat на терминал, а затем захватил полученный текст с помощью моей локальной программы терминала, где я закодировал Это. Больной, а? :)
Если вы хотите указать и щелкнуть мышью, вы можете использовать Konqueror и протокол рыбы. Просто откройте Konqueror и в адресной строке напишите fish: // user @ remote, где user будет пользователем, под которым вы хотите войти, а remote - удаленным компьютером.
SCP - подходящий инструмент для работы. Просто запустите scp с локального компьютера, чтобы использовать:
scp пользователь @ удаленный хост: / путь / к / файлу / имени файла ~ /
... который поместит файл в ваш локальный ящик в вашем домашнем каталоге.
Я придумал способ сделать это с помощью стандартного клиента ssh. Это сценарий, который дублирует текущее соединение ssh, находит ваш рабочий каталог на удаленном компьютере и копирует указанный вами файл на локальный компьютер. Для этого нужны 2 очень маленьких скрипта (1 удаленный, 1 локальный) и 2 строки в вашей конфигурации ssh. Шаги следующие:
1) Добавьте эти 2 строки в свой ~ / .ssh / config
ControlMaster авто
Путь управления ~/.ssh/socket-%r@%h:% p
Теперь, если у вас открыто ssh-соединение с machineX, вам не понадобятся пароли для открытия другого.
2) Создайте однострочный сценарий на удаленном компьютере с именем ~ / .grabCat.sh
#! / bin / bash
cat "$ (pwdx $ (pgrep -u $ (whoami) bash) | grep -o '/.*' | tail -n 1)" / $ 1
3) Создайте сценарий на локальной машине с именем ~ / .grab.sh
#! / bin / bash
[-n "$ 3"] && dir = "$ 3" || dir = "."
ssh "$ 1" ".grabCat.sh $ 2"> "$ dir / $ 2"
4) и создайте псевдоним для grab.sh в (~ / .bashrc или где-либо еще) alias grab = ~ / .grab.sh
Вот и все, готово. С этого момента, если вы вошли в «machineX: / some / directory», просто запустите новый терминал и введите
захватить machineX имя файла
Это помещает файл в ваш текущий рабочий каталог на локальном компьютере. Вы можете указать другое местоположение в качестве третьего аргумента «захватить».
Примечание. Очевидно, что оба сценария должны быть «исполняемыми», т.е. chmod u + x filename
Один из способов сделать это - настроить переадресацию портов при первоначальном подключении ssh к удаленному компьютеру. Сделай это:
$ ssh -L 9999: удаленный: 22 удаленный
где удаленный - это имя удаленной машины.
то в отдельном терминале на вашем локальном компьютере вы можете сделать это:
$ scp -p 9999 localhost: какой-то файл какой-то файл
для копирования файла с удаленного компьютера через существующее соединение ssh из шага 1 обратно на ваш компьютер.
Я понимаю, что это не совсем ответ на ваш вопрос, но я надеюсь, что это даст вам некоторое представление о том, как это сделать. Прочтите о переадресации портов ssh для получения более подробной информации.