Есть ли способ, которым я могу передать ключ по каналу SSH, не сохраняя и не оставляя этот ключ на машине B?
Ключ никогда не покидает ваш локальный компьютер. -A
Вариант только позволяет клиентам на hostB и hostC представить запросы на подпись данных вашему локальному ssh-агенту. (Аутентификация SSH работает с использованием вашей пары ключей для создания цифровых подписей.)
(Технически они могут отправить любую команду ssh-agent, включая «список ключей» или «добавить новый ключ». Однако, нет команды для извлечения секретного ключа или любой другой конфиденциальной информации.)
Однако, если hostB полностью ненадежен (и вы не хотите, чтобы он даже имел возможность отправлять запросы аутентификации), используйте другой подход: локально запустите 2-й клиент и перешлите протокол SSH через «канал» SSH. Таким образом, промежуточные хосты будут видеть только зашифрованный разговор.
Самый простой метод (в OpenSSH 7.3 и более поздних версиях) - это опция ProxyJump:
ssh -J user@hostB user@hostC
Другие варианты -o ProxyCommand="ssh -W %h:%p user@hostB"
или статические TCP-туннели через -L
.