Я спробував дослідити свої варіанти, але нічого не працює так, як мені потрібно. Тут є найкорисніша інформація: 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 використовує локальну машину як проміжний хост, замість типових, де вона намагається скопіювати безпосередньо з А на С), що є менш ніж ідеальним.
Будь-яка допомога вдячна!