Это мой сценарий:
~ / .ssh / id_rsa.pub
(от A) в authorized_keys
~ / .ssh / id_rsa
), поскольку это представляет угрозу безопасности (ключ является личным). Как я могу использовать ключ на хосте А для входа на хост C? Это возможно? Я не боюсь.
(похоже, но отличается от этого вопроса )
Что мне нужно, так это способ предоставить на лету (стандартный ввод или аналогичный) закрытый ключ к ssh-переходу в B, не касаясь файловой системы в B. Возможно ли это?
Если вы используете последнюю версию OpenSSH, вы можете просто ввести:
ssh -J B C
Если вы используете немного старую версию без поддержки -J
, вы можете использовать слегка более сложный синтаксис:
ssh -o ProxyCommand='ssh -W %h:%p B' C
Если вам это нужно каждый раз, когда вы ssh от A до C, может быть полезно добавить запись в ваш .ssh / config
файл, который выглядит следующим образом (в последних версиях):
Host C
ProxyJump B
Или так (в более старых версиях):
Host C
ProxyCommand ssh -W %h:%p B
Используя любой из вышеперечисленных способов, вы можете просто ввести ssh C
, чтобы открыть соединение. Это особенно полезно, когда вы используете ssh
косвенно через один из многих инструментов, которые используют ssh
для своего транспорта. Не все эти инструменты обеспечивают простой способ передачи флагов командной строки команде ssh
.
Tai gana lengva. Tiesiog naudokitės agento persiuntimu (-A parinktis ssh).
Pavyzdys:
#On machine A use
ssh -A user@<machine_B>
#Then on machine B use
ssh -A user@<machine_C>
Nereikia visur kopijuoti privačių raktų. - A persiunčia tik visus SSH agento prašymus į pirmąją grandinės mašiną,Taigi asmeninis raktas mašinoje A gali būti naudojamas tol, kol neperjungiate naudotojų į tarpines mašinas.
Jei pakeisite savo vartotoją mašinoje B (pvz., su su foo į vartotojo foo), agento persiuntimas nebus dirbti ilgiau, nes kitas ryšys atliekamas kaip vartotojo foo su savo raktais.
Я наткнулся на этот вопрос, когда искал то же самое. Решение здесь с ключами выглядит так:
ssh -o ProxyCommand="ssh -i /path/proxy.pem -W %h:%p user@proxy_host" -i /path/target.pem user@target_host
Тем не менее, я не могу взять на себя ответственность, так как это решение взято из другого вопроса, но я убедился, что этот подход работает.