2017-01-19 5 views
2

Хотя простой вопрос, я искал дни без успеха.SSH Перейти Хост БЕЗ экспедирования агента

M = My machine 
J = Jump Host 
S = Server 

Jump Host has my public key on authorized_keys. 
Server has J's public key on authorized_keys. 

Allowed connections (due to key authentication): 
M -> J 
J -> S 

Как это возможно для меня ssh в S с моей машины?

Моя текущая конфигурация:

host jump 
    user root 
    HostName x.x.x.x 

host server 
    user root 
    HostName x.x.x.x 
    port 22 
    ForwardAgent no 
    ProxyCommand ssh jump -W %h:%p 

Это не работает, как он пытается войти в систему с помощью клавиши M в.

Вот лог SSH

debug1: Host 'x.x.x.x' is known and matches the ECDSA host key. 
debug1: Found key in /Users/xxxxx/.ssh/known_hosts:1542 
... 
debug1: Authentications that can continue: publickey 
debug1: Next authentication method: publickey 
debug1: Offering RSA public key: /Users/xxxxx/.ssh/id_rsa 
debug1: Authentications that can continue: publickey 
debug1: Trying private key: /Users/xxxxx/.ssh/id_dsa 
debug1: Trying private key: /Users/xxxxx/.ssh/id_ecdsa 
debug1: Trying private key: /Users/xxxxx/.ssh/id_ed25519 
debug1: No more authentication methods to try. 
Permission denied (publickey). 
Killed by signal 1. 
+1

В более новых версиях ssh есть опция «ProxyJump», которая более прямая, чем 'ProxyCommand'. Но в конце он должен работать точно так же. – michas

+0

Примечание: это означает, что у вас есть свой закрытый и открытый ключ на сервере перехода (shared-server), который не звучит очень безопасно. –

+0

Возможный дубликат: https://stackoverflow.com/questions/38382659/ – jchevali

ответ

1

Да. Конечно, он пытается войти в систему с ключом M. Вы действительно не подключаетесь от J к S.

Первое соединение ssh - от M до J. Это просто устанавливает некоторую пересылку. Второе ssh-соединение происходит непосредственно с M на S, используя переадресацию, настроенную первым ssh. - Нет шансов использовать ключ на J.

Вы можете использовать ssh -A jump ssh-add, чтобы добавить ключ J к вашему агенту. Тогда ваша настройка должна работать нормально.

Другой идеей может быть что-то вроде ssh -t jump ssh server. Таким образом, вы входите в J, и оттуда вы входите в S, в значительной степени, как вы ожидали.

+0

Точно. Я дал ему больше читать, и вы правы. Я пытался избежать перенаправления агентов, поскольку это плохая практика и в настоящее время небезопасна. То же самое с 'ssh -t jump ssh server', которое запускает другой процесс ssh на сервере перехода, и если у злоумышленников есть доступ к машине, они могут скомпрометировать двоичный файл ssh и все же получить доступ. Спасибо! Я буду придерживаться своих ключей на моем хосте и использовать ProxyCommand :) –

Смежные вопросы