Как использовать ssh для копирования файла несколько транзитных участков с передачей агента?

Из Ubuntuguide.org:

Беспроводная связь

Администратор сети

Администратор сети был перепроектирован для Ubuntu и теперь работает вполне хорошо. Вы не должны требовать других администраторов сети, и, на самом деле, больше чем один администратор сети может вызвать конфликты. К этому можно получить доступ от значка панели задач.

Ручная конфигурация от командной строки

3 шага для WEP:

sudo iwconfig eth[N] essid [SSID]
sudo iwconfig eth[N] key restricted s:[PASSWORD]
sudo dhclient

WPA более сложен:

su
mkdir /etc/wpa_supplicant
cd /etc/wpa_supplicant
echo network = { > wpa_supplicant.conf
echo ssid="SSID" >> wpa_supplicant.conf
echo key_mgmt=WPA-PSK >> wpa_supplicant.conf
echo psk="PRESHAREDKEY" >> wpa_supplicant.conf
echo } >> wpa_supplicant.conf
cd /etc/network
vim interfaces

Теперь добавьте после "автоматического eth [N]..." И "iface eth [N].." (нажимают на 'меня'):

wpa-driver wext # or whatever driver your network card needs
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Сохраните файл ('Esc', ':x', 'Войдите'), и перезапустите свою систему.

3
задан 2 February 2012 в 20:53
4 ответа

Если ваш sshd настроен на пересылку TCP, вы можете настроить туннель с вашего компьютера на B через A, а затем использовать его для копирования. Создайте туннель

ssh -f -L 2050:B:22 A -N
  • -f в фоновом режиме для команды ssh, чтобы вы могли снова использовать свой терминал.
  • -L 2050: B22 привязать порт localhost 2050 к порту хоста B 22
  • -N не выполняют удаленную команду.

затем скопировать с вашего компьютера на B

scp -P 2050 filetocopy localhost:/destination/path 

РЕДАКТИРОВАТЬ: Если вы используете

ssh -L 2050:B:22 A -N &

, тогда вам сообщат PID команды ssh, когда она находится в фоновом режиме.

3
ответ дан 3 December 2019 в 05:48

Поместите что-то вроде этого в .ssh / config:

Host B-p C-p D-p
        ProxyCommand ssh -W %h:%p A.example.com
Host B-p
        Hostname B.example.com
Host C-p
        Hostname C.example.com
Host D-p
        Hostname D.example.com

и просто ssh или scp в / из B-p . Вы можете опустить суффикс -p и настроить ProxyCommand непосредственно на B.example.com и т. Д., Если вы всегда «снаружи».

Это влечет за собой небольшую нагрузку на трафик между вашей машиной и хостом-бастионом, но работает без пересылки агентов.

1
ответ дан 3 December 2019 в 05:48

Недавно у меня был похожий (даже более сложный) случай, и мне удалось решить проблему.

Краткий ответ: используйте ProxyCommand вместо пересылки агентов.

] Длинная история:

В моем случае задействовано четыре хоста:

  • Рабочий стол Linux в моем офисе
  • Сервер Linux VPN где-то в Интернете
  • Домашний сервер Linux в моей квартире
  • Ноутбук с Linux в моем apartment

Маршрутизатор в моей квартире не получает публичного адреса от интернет-провайдера, поэтому домашний ноутбук и домашние серверы находятся за двойным NAT, я не могу выполнять переадресацию портов или что-то еще, потому что я не могу управлять устройствами ISP. По какой-то причине домашний сервер всегда подключен к VPN-серверу с публичным адресом. Таким образом я могу ssh -A на VPN-сервер, и ssh -A на домашний сервер и, наконец, ssh на мой домашний ноутбук.

Но иногда Мне нужно передать файлы. Я не хочу, чтобы rsync / scp несколько раз переходили по шагам.

ProxyCommand приходит на помощь. Поместите их в ~ / .ssh / ssh_config :

# Host A is a VPN gateway with public address.
Host a.example.org
  HostName 1.2.3.4

# Host B is a home server / gateway with no public address.
# It's connected to host A via VPN.
Host b.example.org
  HostName 10.255.255.100
  ProxyCommand ssh -W %h:%p a.example.org

# Host C is my home laptop.
Host c.example.org
  HostName 192.168.2.100
  ProxyCommand ssh -W %h:%p b.example.org

# vim: ft=sshconfig:

Это может быть связано неограниченно. Вы можете продолжать связывать хост D, хост E и т. Д., Пока у ваших хостов есть быстрые соединения. Нет необходимости делать ssh -L или ssh -D шаг за шагом вручную и подключаться через нестандартные порты. Теперь я могу использовать ssh c.example.org прямо из любого места, если я могу подключиться к a.example.org . Конечно, автоматически поддерживаются другие протоколы на основе SSH, такие как Rsync, SCP, SFTP и т. Д.

1
ответ дан 3 December 2019 в 05:48

Вы можете использовать tar для копирования файла:

tar cC SRC-DIR SRC-FILE | ssh A.example.com ssh B.example.com tar xC DST-DIR

Обязательно добавьте правильное количество кавычек в DST-DIR, если необходимо; он будет интерпретироваться тремя оболочками.

Использование ssh и tar очень гибко, например, когда scp отказывается работать с двумя удаленными местами.

.
0
ответ дан 3 December 2019 в 05:48

Теги

Похожие вопросы