SSH-ключ на нескольких машинах с SSH-цепочкой

229
user910861

Я хотел бы иметь возможность ssh на нескольких компьютерах, используя флаг -A на ssh, например: ssh -A user @ hostB ssh -A user @ hostC

Это прекрасно работает в сценариях, где у меня есть SSH-ключи, позволяющие мне перейти от моей машины (hostA) к hostB, а затем ключи, идущие от hostB к hostC. Но что, если я хочу иметь возможность перейти от A к C, но не разрешить обмен ключами от B к C? Есть ли способ, которым я могу передать ключ по каналу SSH, не сохраняя и не оставляя этот ключ на машине B?

0

1 ответ на вопрос

1
grawity

Есть ли способ, которым я могу передать ключ по каналу 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.

Отлично, большое спасибо user910861 6 лет назад 0