SCP через проміжний хост


1

Я спробував дослідити свої варіанти, але нічого не працює так, як мені потрібно. Тут є найкорисніша інформація: scp файли через проміжний хост

У мене є наступне налаштування: я працюю на машині A. У мене встановлені ключі на машині B (з увімкненим агентом ssh), які дозволяють мені отримати доступ до машини C. (Окрім того, причина цієї конфігурації полягає в тому, що доступ до машини B сильно обмежений, включаючи двофакторну автентифікацію, і кожна інша машина налаштована лише для доступу до кореневого доступу SSH, що надходить з цієї машини.)

Проблема полягає в тому, що код ssh-агента працює лише для оболонок входу, а не тоді, коли команди виконуються над ssh, тому він не намагається використовувати ключ, який знаходиться на Machine B для доступу до машини C. Це код у моєму .bashrcі .profile:

export SSH_AUTH_SOCK=~/.ssh/ssh-agent.$HOSTNAME.sock
ssh-add -l 2>/dev/null >/dev/null
if [ $? -ge 2 ]; then
  ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null
fi

В ідеалі я хотів би мати можливість псевдоніму деякої команди, щоб я міг виконувати її так само, як scp (наприклад scpproxy localfile user@MachineC:/root/remotefile). Моє поточне рішення - з машини B scp -3 user@MachineA:localfile user@MachineC:remotefile(де -3причини, які scp використовує локальну машину як проміжний хост, замість типових, де вона намагається скопіювати безпосередньо з А на С), що є менш ніж ідеальним.

Будь-яка допомога вдячна!

Відповіді:


1

Конфігурація для проміжних хостів scpі sshчерез них (по суті) однакова. Багато інші відповіді на scp, sshабо навіть rsyncв тому ж контексті , повинні працювати для вас. По суті, вам слід користуватися тим самим ключем, щоб отримати доступ з машини "А" до "В", як ви використовуєте, щоб дістатися з машини "В" до "С". Однак, схоже, ви можете вводити текст, щоб скористатися клавішами без пароля, розташованими на "B", щоб отримати доступ до "C". Залишаючи в стороні (погані) наслідки для безпеки цих ключів, які не містять парольних фраз, я б запропонував вам помістити той самий відкритий ключ вашого приватного ключа (сподіваємось, що захищений парольною фразою), який знаходиться на "A" у ~/.ssh/authorized_keysфайл на "C". Таким чином, все, що вам потрібно зробити, це щось подібне:

scp -o "ProxyCommand ssh -A B -W %h:%p" C:file .

Це дозволить налаштувати проксі / хоп через хост "B", отримавши ім'я файлу "файл" у вашому домашньому каталозі на "C" та перемістивши його у поточний робочий каталог на "A".

Додатково ви можете зашифрувати це у своєму ~/.ssh/configфайлі:

Host C
  ProxyCommand ssh -A B -W %h:%p

Тоді ви можете просто:

scp C:file .

Більше того, ніщо з цього не вимагає псевдоніму або сценарію, щоб зробити це за вас. Ви просто використовуєте scpбезпосередньо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.