Назад | Перейти на главную страницу

Как загрузить файл на сервер, на который вы уже вошли по ssh?

Я знаю, как использовать 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 для получения более подробной информации.