Czy można określić przekazane klucze za pomocą dyrektywy IdentityFile w .ssh / config?
Wpadłem na to dziwactwo, próbując wdrożyć jakiś kod za pomocą Capistrano / GIT na naszym serwerze produkcyjnym. Zarówno mój osobisty, jak i służbowy klucz GIT są zawsze ładowane do mojego agenta SSH i tak się złożyło, że mój osobisty klucz został najpierw dodany do agenta. Podczas wdrażania za pomocą Capistrano używam przekazywania agenta, więc gdy host próbował uwierzytelnić operację `git pull`, nie powiodło się z następującym błędem:
BŁĄD: Odmówiono zgody na „niektóre repo” dla „użytkownika”.
ponieważ próbował uwierzytelnić się przy użyciu mojego osobistego klucza git przed wypróbowaniem odpowiedniego klucza (który pojawił się później w agencie ssh) i założył, że uzyskiwałem dostęp do zagranicznego repo, do którego nie mam uprawnień. Mogę potencjalnie po prostu dać mojemu osobistemu użytkownikowi dostęp do każdego repozytorium pracy, ale na moim komputerze lokalnym mogę obejść ten problem, definiując niestandardowe domeny w .ssh / config w następujący sposób:
Host personal.github.com
Nazwa hosta github.com
Użytkownik git
IdentityFile ~ / .ssh / some_key
Host work.github.com
hosta github.com
użytkownika git
IdentityFile ~ / .ssh / some_other_key
i w ten sposób git nigdy się nie myli. Czy jest możliwe utworzenie reguł .ssh / config dla przekazanych kluczy w moich skrzynkach produkcyjnych, aby zawsze wiedzieli, którego klucza użyć przy pobieraniu nowego kodu? Zasadniczo chcę być w stanie:
Host work.github.com
Nazwa hosta github.com
Użytkownik git
IdentityFile some_forwarded_key
Dzięki!
źródło
ssh -v -T ...
serwerem akceptuje klucz publiczny, ale potem ssh mówi,No such identity: /home/name/.ssh/id_rsa: No such file or directory
a następnie uwierzytelnianie kończy się niepowodzeniem. Mam włączone ForwardAgent we wszystkich moich konfiguracjach. Co może być problemem?