Допустим, у меня есть ключ для Github и другие ключи. Я добавил много ключей к моему ssh-агенту ( ssh-add -L
возвращает много строк) на моем домашнем компьютере A. В моем, .ssh/config
я установил, какой ключ использовать с каким хостом, например,
ssh -T -vvv git@github.com 2>&1 | grep Offering
дает
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
Как и ожидалось, предлагается только один ключ. Но затем, подключившись к некоторому хосту B ForwardAgent yes
и повторив ту же команду, я получаю
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.linode2
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.helium
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
значит, он пробует все мои ключи. Это проблематично, поскольку перед возвратом серверов можно попробовать только ограниченное количество ключей Too many authentication failures
. Поэтому я попытался изменить .ssh/config
на хосте B, чтобы включить
Host github.com
IdentityFile /Users/doxna/.ssh/id_rsa.github
IdentitiesOnly yes
но тогда я не получаю никаких ключевых предложений, а скорее
debug2: key: /Users/doxna/.ssh/id_rsa.github ((nil))
что, по-моему, означает, что ключ не был найден (?) И, в конце концов, ключ находится на моем домашнем компьютере A, а не на хосте B, поэтому вопрос в том, как обратиться к нему на хосте B? Надеюсь, мне удалось объяснить вопрос.
ssh
на файл открытого ключа без связанного файла закрытого ключа, он должен просто прочитать открытый ключ из файла и заставить агента использовать соответствующий закрытый ключ для генерации подписи.Хороший ответ от @Kasperd, но учтите также, что если хост B скомпрометирован или если вы не доверяете всем, у кого есть привилегии root, вы все равно подвергаете все свои ключи злоупотреблению до тех пор, пока вы вошли в систему. на этом хосте.
Поэтому лучшим подходом может быть перенаправление доступа только к тем ключам, которые вам нужны. Может быть, попробуйте
ssh-agent-filter
в репозиториях Debian / Ubuntu или из github .РЕДАКТИРОВАТЬ: Я остановился,
ssh-ident
а неssh-agent-filter
на выборочной пересылке ключей, хотя это не так гладко, как можно надеяться.источник
SSH_*
переменные окружения и входите туда, куда вы хотите перейти, используя ключ, несмотря на то, что у вас нет действительной копии.