Łączę się przez SSH z komputera, na którym przechowywane są moje klucze, przekierowuję na drugi komputer, a następnie próbuję użyć kluczy z poziomu tmux. Wydaje mi się, że „tracę” przekazywanie podczas wchodzenia do tmux. Jak mogę „przekierować ponownie”, aby móc używać moich kluczy z poziomu tmux?
$ ssh [server] -o ForwardAgent=yes
$ git pull # Succeeds.
$ /bin/bash
$ git pull # Still succeeds, despite new shell.
$ exit
$ tmux attach
$ git pull # Permission denied (publickey)
Odpowiedzi:
Jeśli dołączasz już istniejącą sesję tmux, powłoka nie dziedziczy zmiennych środowiskowych z powłoki logowania. W szczególności nie odziedziczy zmiennych środowiskowych agenta ssh.
Wypróbuj tę poprawkę :
Utwórz ten skrypt i umieść go w $ HOME / .ssh / saveagent
Dodaj go do skryptu uruchamiania powłoki. Na przykład, jeśli używasz bash:
Po dołączeniu tmux, uruchom
. $HOME/.ssh/latestagent
Zobacz także Jak mogę uruchomić skrypt natychmiast po połączeniu przez SSH? i Dołącz do sesji tmux i uruchom polecenie
źródło
saveagent
skrypcie powinny być:echo "export $var=\"$(eval echo '$'$var)\""
. b - zamiast tegolatestagent
należy wywołać skrypt , więc ustawienie zmiennych wpłynie na powłokę wywołującą. c - automatyczne wywoływanie skryptu po dołączeniu tmux można wykonać za pomocą metody opisanej tutaj: unix.stackexchange.com/questions/86925/…source
sh
latestagent
O ile nie chcesz źródła skryptu zawierającego wszystkie potrzebne zmienne w każdej powłoce, którą dalej spawnujesz w każdej nowej powłoce spawnowanej przez te same
tmux
sesje serwera, prawdopodobnie będziesz chciał powiedzieć,tmux
aby wstawić zmienne do sesji lub środowisk globalnych za pomocąset-environment
polecenia. Na przykład tak (dla bash):pamiętaj, aby dodać
-g
flagę, jeśli chcesz ją również w innych sesjach i użyć,-t <session>
jeśli uruchamiasz ją spozatmux
.źródło
Po przeczytaniu innych odpowiedzi tutaj, postanowiłem po prostu skopiować moją publiczną / prywatną parę kluczy na zdalny serwer, aby nie musiałem martwić się o przekazywanie agentów.
źródło