ssh -A nie włącza poprawnie przekazywania połączenia agenta uwierzytelniania

22

Uwielbiam ssh -A, co pozwala mi używać lokalnego klucza SSH podczas nawiązywania połączenia ze zdalnego serwera. Na przykład ja, ssh -A host1.example.coma następnie stamtąd mogę ssh host2.example.com(lub użyć git) i używa on mojego klucza ssh z oryginalnej maszyny, która w tym przypadku powinna być moim komputerem Mac. Chociaż zawsze działało to dla mnie na Debian / Ubuntu, nie działa na moim nowym komputerze Mac (Lion).

Czego tu brakuje? Jak skonfigurować ssh, aby działał poprawnie z -A? Czy potrzebuję ssh, który nie jest standardowym systemem MacOS?

rfay
źródło

Odpowiedzi:

33

W rzeczywistości bardzo prosta odpowiedź brzmi: musisz biec

ssh-add

i wtedy wszystko działa.

Zasadniczo w systemie macOS jest już skonfigurowany agent ssh-agent, ale po każdym ponownym uruchomieniu należy do niego dodać klucze. ssh-add daje ssh-agentowi dostęp do twoich kluczy dla bieżącego cyklu rozruchu. Będziesz musiał wprowadzić hasło do swojego klucza prywatnego, jeśli go utworzyłeś.

rfay
źródło
To rozwiązało mój ostatni problem z przekazywaniem ssh po aktualizacji do systemu macOS (po 5 latach wciąż przydatna odpowiedź, dzięki @rfay)
23tux
To działa, ale niektóre wyjaśnienia, dlaczego byłyby przydatne / pomagają ludziom zapamiętać to polecenie.
Adam Parkin
2
@AdamParkin dodał kolejny akapit wyjaśniający.
rfay
1

Pojęciem ssh -Asą agenci ssh. Działają w tle i za pomocą zmiennych środowiskowych agent może zostać zlokalizowany i automatycznie użyty do uwierzytelnienia podczas logowania do innych komputerów za pomocą ssh. Więcej informacji znajdziesz na stronie ssh-agent.

W systemie Mac OS X agent ssh powinien być uruchamiany na żądanie.

Aby uzyskać więcej informacji zobacz:

Florian Feldhaus
źródło
1

Począwszy od OS X 10.8, musisz to zrobić raz:

sudo touch /var/db/useLS

I dodaj to jako część ~/.bash_profile:

if [ -f ~/.ssh/id_rsa ]; then
    ssh-add -K ~/.ssh/id_rsa 2>/dev/null
fi

Uwaga: ten przepis jest częścią moich skryptów beduińskich .

sorin
źródło
Hm, właśnie to wypróbowałem; agent następnie się uruchamia, ale nadal musisz dodać ssh-add, aby wszystko działało. Tak więc, o ile rozumiem, sam ssh-add jest nadal odpowiedzią. Chyba powinienem dodać go do mojego .bash_profile.
rfay
lol, co jeśli mój klucz prywatny potrzebuje hasła?
Jeffrey04,