Я пытаюсь настроить ключи авторизации, чтобы я мог войти на удаленный компьютер без пароля.

Сложность в том, что мне нужно сначала пройти через университетский шлюз (machine1), прежде чем я смогу добраться до удаленного компьютера (machine2).

Я создал ключи авторизации на своей локальной машине и добавил открытый ключ в список авторизованных ключей на машине1. Это отлично; Теперь я могу ssh в machine1 без пароля.

Я не ясно, на следующем шаге. Должен ли я сейчас:

(а) нужно сгенерировать больше ключей на машине1 и добавить их в авторизованные ключи на машине2? или (б) поставить тот же открытый ключ (с моего локального компьютера), который я только что добавил на machine1, на machine2?

1 ответ1

2

Вы можете сделать оба, в основном.

а) больше ключей

Вы можете создать ключи на machine1 и скопировать открытый ключ в machine2 /home/yourusername/.ssh/authorized_keys .

Если вы не выбрали альтернативу ниже, я бы предложил этот метод. Если кто - то получает свой секретный ключ для machine2 на machine1 он до сих пор не имеет свой секретный ключ на вашем клиенте для machine1

б) тот же ключ

Вы также можете взять открытый ключ, который вы скопировали на machine1 и поместить его на machine2 . В этом случае, вы должны скопировать ваш личный ключ machine1 успешно SSH от machine1 к machine2

Я бы не советовал, потому что ваш единственный, единственный закрытый ключ теперь доступен в удаленной системе.

альтернатива

в) ProxyCommand

Храните закрытый ключ в секрете на вашем клиенте. Скопируйте открытый ключ только в /home/yourusername/.ssh/authorized_keys каждого компьютера. На вашем клиенте настройте /home/yourusername/.ssh/config (при условии, что вы используете Linux на своем клиенте):

Host machine1
    HostName machine1.domain.tld
    Port 22   # or whichever port that is in your scenario
    User yourusername
    IdentityFile ~/.ssh/machine1privatekey

Host machine2
    HostName hostname   # resolves in the local network? If not, give its IP address here
    Port 22
    User yourusername
    IdentityFile ~/.ssh/machine1privatekey # the same as above
    ProxyCommand ssh -W machine2:22 machine1

В этом случае простой ssh machine2 соединит вас с machine2 через machine1 без необходимости сначала ssh на machine1, а затем вручную ssh на machine2.

Дополнительное преимущество: ваш закрытый ключ должен находиться только на вашем клиенте, а не в удаленной системе.

Редактировать:

d) переадресация агента SSH

Вы могли бы, вероятно, сохранить как частные ключи для machine1 и machine2 на клиентском компьютере и использовать SSH перенаправление агента , чтобы machine1 вперед закрытого ключа от клиента к machine2 Это считается рискованным, и я им не пользуюсь, но должно быть что-то вроде этого:

$ ssh-agent /bin/bash
$ ssh-add ~/.ssh/machine*privatekey
$ ssh -A -p 22 yourusername@machine1.domain.tld 'ssh -p 22 yourusernameqmachine2'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .