Я ищу простой способ SSH с моего локального компьютера A через прокси-сервер B на хост назначения C. Закрытый ключ, который идет с открытым ключом на C, находится на B, и я не могу положи этот ключ на мою локальную машину. Какие-нибудь советы?
Кроме того, я хотел бы иметь возможность сделать это с помощью ~ / .ssh / config.
Спасибо!
Ответы:
Схема:
Предпосылки:
A
работает ssh-agent;A
может получить доступB
;B
может получить доступC
;A
ssh публичный ключ присутствует вB:~/.ssh/authorized_keys
B
ssh публичный ключ присутствует вC:~/.ssh/authorized_keys
В
~/.ssh/config
наA
, добавитьЕсли ваш секретный ключ ssh на B находится в нестандартном месте, добавьте его путь после
ssh-add
.Теперь вы должны иметь возможность доступа
C
изA
:источник
ProxyJump B
. источник: wikibooksnc
?ForwardAgent yes
прежде чем вProxyJump
команде.Проверьте, работает ли следующее.
Используйте следующую команду, если вы хотите использовать ключ, хранящийся на B.
Здесь мы указываем команду, т.е.
ssh -i /path/to/identity_on_B C
выполняемую на B вместо оболочки входа в систему.источник
Я решил это сейчас. Вот решение, которое довольно просто. Я должен был увидеть это раньше:
~ / .Ssh / конфигурации:
«B» - прокси-сервер, через который вы прыгаете. Он должен быть настроен так, как вы обычно настраиваете доступ к серверу.
«C» - хост назначения. Он должен быть настроен на использование «B» в процессе подключения. Идентификационный файл в «C» - это путь к ssh-ключу в «B». ProxyCommand использует Netcat, чтобы открыть соединение с «C» из «B». Netcat, или nc, должен быть установлен на 'B'.
Надеюсь, что это помогает другим.
источник
Я написал простой скрипт, который в основном перечисляет мои ключи ssh на удаленном экземпляре, а затем добавляет тот, который я выбрал, в свой локальный агент ssh. Это не очень чисто, но позволяет хранить все ключи в удаленном месте, а не локально.
Вот сценарий, если кому-то интересно:
источник
источник
Сделать:
ssh someuser@IP_D
такой, что
A -> B-> C -> D
где A - хост, на котором вы находитесь,отредактируйте ваш локальный файл ~ / .ssh / config следующим образом:
Этот ответ основан на выбранном ответе. Я должен был выяснить, как различные пользователи вписываются в весь сценарий.
Это работает для меня. НТН.
источник
Ответ Снежка очень помог. Однако я сделал некоторые изменения в команде и хотел объяснить, как она работает. Учитывая эту ситуацию:
Измените ваш
~/.ssh/config
файл и добавьте хост,B
через который вы хотите перейти, так же, как вы обычно конфигурируете хост:Затем вы добавляете хост
C
, на котором хотите оказаться:Обратите внимание
ProxyCommand
, где:ssh -T -q
указывает, что он не должен выделять псевдо-TTY (-T
) и быть тихим (-q
);B
, мы добавляем ключ к ключам SSHA
сквозного соединенияssh-add
;-o 'ForwardAgent yes'
.ssh-add -t 1
указывает, что я хочу, чтобы ключ был добавлен только в течение 1 секунды, необходимой для аутентификации на конечном хосте C;nc %h %p
инициируетnetcat
соединение с конечным хостом%h
в порту%p
(оба будут заполнены SSH на основе информации в~/.ssh/config
файле).Если вам нужно указать пользовательский ключ
B
для использования, вы можете сделать это, изменивssh-add
деталь:источник