Mam dwa prywatne klucze ssh:
- jeden, aby uzyskać dostęp do moich osobistych maszyn,
- jeden, aby uzyskać dostęp do serwerów w mojej pracy .
Dodaję te dwa klucze do mojego ssh-agent za pomocą ssh-add
.
Teraz, gdy to zrobię ssh -A root@jobsrv
, chciałbym przekazać uwierzytelnianie agenta tylko dla mojego klucza zadania (tego, którego używam do połączenia jobsrv
).
Chcę tego, ponieważ każdy, kto ma dostęp do roota, jobsrv
może użyć mojego agenta do uwierzytelnienia się na moich komputerach osobistych.
Czy istnieje sposób na osiągnięcie tej izolacji?
ssh -A -i myjobkey_rsa root@jobsrv
nadal pozwala maszynie jobsrv na dostęp do mojego lokalnego agenta maszyny i uwierzytelnienie na moim osobistym serwerze za pomocą innego (osobistego) klucza ...Odpowiedzi:
Aby wymusić
ssh(1)
użycie określonego klucza, nawet jeślissh-agent(1)
oferuje wiele, użyj dyrektywyIdentityFile
iIdentitiesOnly
w~/.ssh/config
np.Zobacz
ssh_config(5)
szczegóły.źródło
IdentitiesOnly
dotyczy, gdy próbujesz połączyć się ze zdalnym serwerem. Po nawiązaniu połączenia, jeśli-A
przekazywanie agentów jest włączone, przekazywany jest cały brelok.Niestety, uważam, że nie jest możliwe achive to łatwo w chwili obecnej . Można użyć dwóch agentów (po jednym dla każdego klucza), aby żaden agent nie posiadał wszystkich kluczy. Ale byłoby to dość kłopotliwe w pracy.
Właśnie dlatego został otwarty raport o błędzie (ulepszenie). Istnieje również podobny raport .
źródło