Я пытался исследовать свои варианты, но ничто не работает так, как мне нужно. Наиболее полезная информация находится здесь: файлы scp через промежуточный хост
У меня есть следующие настройки: Я на Машине А. У меня настроены ключи на Машине B (с включенным агентом ssh), которые предоставляют мне доступ к Машине C. (Кроме того, причина этой конфигурации заключается в том, что доступ к машине B сильно ограничен, включая двухфакторную аутентификацию, и каждая другая машина настроена так, чтобы разрешать только корневой доступ SSH, исходящий с этой машины.)
Проблема заключается в том, что код ssh-agent запускается только для оболочек входа в систему, а не при выполнении команд поверх ssh, поэтому он не пытается использовать ключ, расположенный на компьютере 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 использовать локальный компьютер в качестве промежуточного хоста вместо того, чтобы по умолчанию он пытался копировать напрямую с От А до С), что менее чем идеально.
Любая помощь приветствуется!