Как я могу загрузить файл с хоста, к которому я могу подключиться только по SSH через другой хост?

Тип установочного образа не имеет значения для Debian, как только вы подключите их к Интернету, вы сможете установить все. Что касается этого, если у вас уже есть ipxe, вы можете установить Debian, используя только образ 64k rom, сетевой образ и сетевой кабель. вы также можете использовать полный набор компакт-дисков (, DVD-дисков или дисков Blu-Ray )для установки минимальной системы. Насколько минимально? Разве что вы делаете пресейдинг пакетов с приоритетом выше стандартного и их требований и рекомендаций так мало, как вы идете, если ничего не выбираете в выборе задачи. Если вы хотите меньше этого, вам нужно использовать файл preseed, который вы можете использовать для переопределения выбора пакетов, внесения отдельных пакетов в черный список и игнорирования рекомендаций.

Теперь, если вы хотите уменьшить размер своей установки, вы можете либо сделать это снова (За последние пару дней я делал это примерно пять раз, но сейчас я разрабатываю udeb ), либо просто запускаю aptitudeи удалите то, что вам не нужно (Я рекомендую aptitude, это потрясающе ).

31
26.08.2019, 10:48
8 ответов

В предыдущих ответах упоминалось, как использовать директиву ProxyJump (, добавленную в OpenSSH 7.3 ), для подключения через промежуточный сервер (, обычно называемый хостом-бастионом ), но упоминайте его только как команду линейный аргумент.

Если это не машина, которую вы не будете подключать в будущем, лучше всего настроить ее на ~/.ssh/config.

Я бы поставил файл типа:

Host office-machine
Hostname yochay-machine.internal.company.local
ProxyJump bastion-machine

Host bastion-machine
Hostname organization-server.company.com
...

Если вы используете более раннюю версию OpenSSH, которая не поддерживает ProxyJump, вы должны заменить ее эквивалентной:

ProxyCommand ssh -W %h:%p bastion-machine

и если ваша локальная версия ssh была очень старой и не поддерживала-W:

ssh bastion-machine nc %h %p

хотя для последнего требуется, чтобы на машине-бастионе была установлена ​​nc.

Прелесть ssh в том, что вы можете настроить каждое место назначения в файле, и они будут очень хорошо складываться. Таким образом, вы в конечном итоге работаете с office-machineв качестве имени хоста для всех инструментов (ssh, scp, sftp... ), поскольку они были прямыми подключениями, и они выяснят, как подключиться на основе ssh _. ] конфиг. У вас также могут быть подстановочные знаки, такие как Host *.internal.company.local, чтобы все хосты, заканчивающиеся таким образом, проходили через определенный бастион, и это будет применяться ко всем из них. После правильной настройки единственная разница между соединением с одним переходом или двадцатью будет заключаться в более медленном времени соединения.

38
20.08.2021, 10:55

Если у вас установлена ​​последняя версия OpenSSH (8.0)локально , вы можете использовать переключатель-J(перехода ):

scp -J user@intermediate user@target:/path

В более старых версиях (, но не ниже 7.3 ), вы можете использоватьProxyJumpдирективу либо в командной -строке:

scp -o ProxyJump=user@intermediate user@target:/path

или в файле ssh_config, как показывает ответ @Ángel.


Существуют и другие параметры, такие как ProxyCommandили переадресация портов, которые вы можете использовать даже в более старых версиях OpenSSH. Они описаны в Поддерживает ли OpenSSH вход в систему с несколькими переходами?

39
20.08.2021, 10:55

Используйте конфигурацию ProxyJump:

ProxyJump
Specifies one or more jump proxies as either [user@]host[:port] or an ssh URI. Multiple proxies may be separated by comma characters and will be visited sequentially. Setting this option will cause ssh(1) to connect to the target host by first making a ssh(1) connection to the specified ProxyJump host and then establishing a TCP forwarding to the ultimate target from there.

scp -o ProxyJump=user@intermediate user@target:/path
8
20.08.2021, 10:55

Иногда мы можем просто использовать конвейер. Это время сегодня.

ssh -A user@host1 ssh user@host2 cat filename > filename

Вы тоже можете загрузить

ssh -A user@host1 ssh user@host2 cat \\\> filename < filename

Да, есть и другие решения, связанные с проксированием и т. д., но полезно знать, как это сделать.

10
20.08.2021, 10:55

Через SCP -3:

scp -3 user1@remote1:/root/file1.txt user2@remote2:/root/file1.txt
0
20.08.2021, 10:55

Существует древний протокол под названием ZMODEM:немногие программы в наши дни поддерживают его, но когда он работает, он может быть довольно удобным.

Сначала проверьте, поддерживает ли терминальная программа вашего ноутбука ZMODEM. (Например, вы можете настроить iTerm2 (на Mac )для поддержки ZMODEM. Пример скрипта доступен здесь .)

На своем офисном компьютере запустите:sudo apt install lrzsz

Теперь все, что вам нужно сделать, это подключиться по ssh к вашему офисному компьютеру и запустить sz (filename). Файл будет загружен через ваш терминал.

2
20.08.2021, 10:55

Конфигурация под ssh пользователя:~/.ssh/config

Host *
    UserKnownHostsFile=/dev/null
    StrictHostKeyChecking=no
    ServerAliveInterval 300
    ServerAliveCountMax 2
    ForwardAgent yes


Host jump server
    HostName server.company.org
    User root

Host jump1 server1
    HostName server1.dmz.company.org
    User root
    ProxyJump jump

Host jump2 server2
    HostName server.dmz2.company.org
    User root
    ProxyJump jump1

Host *.intranet.company.org
    User user
    ProxyJump jump2

Теперь вы можете копировать с сервера интрасети напрямую через 3 сервер перехода.

scp user@server.intranet.company:/home/user/./*

Я предпочитаю это, потому что больше не нужно указывать серверы перехода с помощью scp

1
20.08.2021, 10:55

Вот что мне помогло:

scp -o 'ProxyJump user@intermediate' user@target:/fiepath.

.в конце указывает, что целевой путь загрузки — текущая папка.

0
20.08.2021, 10:55

Теги

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