Mam skonfigurowany klucz prywatny dla mojego konta github, którego hasło jest, jak sądzę, przechowywane w pęku kluczy OS X. Z pewnością nie muszę go wpisywać, kiedy otwieram okno terminala i wchodzę ssh [email protected]
.
Jednak gdy uruchamiam bash nad sesją ssh lub lokalnie wewnątrz sesji tmux, muszę wpisywać hasło za każdym razem, gdy próbuję ssh na github.
To pytanie sugeruje, że podobny problem istnieje z ekranem, ale tak naprawdę nie rozumiem tego problemu wystarczająco dobrze, aby rozwiązać go w tmux. Jest też ta strona, która zawiera dość skomplikowane rozwiązanie, ale dla zsh.
EDYCJA :
W odpowiedzi na odpowiedź @ Mikela z lokalnego terminala otrzymuję następujące dane wyjściowe:
[~]
$ echo $SSH_AUTH_SOCK
/tmp/launch-S4HBD6/Listeners
[~]
$ ssh-add -l
2048 [my key fingerprint] /Users/richie/.ssh/id_rsa (RSA)
[~]
$ typeset -p SSH_AUTH_SOCK
declare -x SSH_AUTH_SOCK="/tmp/launch-S4HBD6/Listeners"
Natomiast przez ssh lub w tmux otrzymuję:
[~]
$ echo $SSH_AUTH_SOCK
[~]
$ ssh-add -l
Could not open a connection to your authentication agent.
[~]
$ typeset -p SSH_AUTH_SOCK
bash: typeset: SSH_AUTH_SOCK: not found
echo $SSH_AGENT_PID
nic nie zwraca niezależnie od powłoki, z której go uruchamiam.
typeset -p SSH_AUTH_SOCK
?bash: typeset: SSH_AUTH_SOCK: not found
z poziomu ssh / tmux. W razie potrzeby spróbuję tego wieczorem.Odpowiedzi:
Mój kolega stworzył kilka funkcji bash, aby pomóc w znalezieniu agenta na żywo: https://github.com/wwalker/ssh-find-agent
Używa go głównie do łączenia systemów (laptop z komputerem stacjonarnym itp.), Ale najczęściej używam go do lokalnych sesji tmux, w których wylogowujesz się / logujesz z menedżera okien (dla mnie OS X).
Stosowanie
Pobierz ssh-find-agent.bash (
git clone git://github.com/wwalker/ssh-find-agent.git
działa).Dodaj następujące elementy do ~ / .bashrc:
Następnie możesz wpisać następujące polecenie, aby ustawić SSH_AUTH_SOCK w bieżącej powłoce:
źródło
Eleganckie rozwiązanie, wybrane z dagit.o :
Stwórz
~/.ssh/rc
Dodać do
~/.tmux.conf
źródło
W
.tmux.conf
pliku konfiguracyjnym dodaj ten wiersz:Powoduje to skopiowanie tych zmiennych środowiskowych z głównej powłoki do dowolnych powłok otwartych w tmux, co następnie pozwala ssh-agentowi na poprawne działanie w tych powłokach tmux.
źródło
update-environment
. PO powinien sprawdzić ichupdate-environment
wartość i ewentualnie zaktualizować, gdziekolwiek jest już zmieniany.update-environment
jest ustawiony poprawnie. Jednak problem nadal występuje.tmux
uruchomiona ponownie tylko wtedy, gdy nie ma serwera, co jest sprzeczne z celem ponownego przyłączenia ... Może istnieje przełącznik linii poleceń, aby zaktualizować te zmienne?Zdarzyło mi się, że panele utworzone podczas łączenia przez ssh z OS X zaczęły pytać o moje hasło po pewnym czasie pracy w porządku. Znalazłem sposób, aby naprawić tę kradzież tej linii z http://santini.di.unimi.it/extras/ph/my-tmux-setup.html
Po prostu uruchom go z okienka, które narzeka.
źródło
Nie jestem pewien, czy używasz bash czy innej powłoki, ale konfiguracja tmux tego faceta wygląda na to, że zadziała dla bash. Osobiście używam zsh z oh-my-zsh i odkryłem, że ssh-agent zaczął działać w tmux po dodaniu
do mojego pliku .zshrc i ponownie załadowałem konfigurację w moich uruchomionych sesjach zsh. Znalazłem również zorientowane na zsh rozwiązanie tego faceta , ale okazało się to dla mnie niepotrzebne.
źródło
Co robi:
wydrukować?
Uruchom go w normalnym terminalu, a następnie uruchom go w
tmux
sesji. Powinny wydrukować to samo.źródło
ssh
jest proste. Włącz przekazywanie agentów. Najłatwiejszym sposobem na to jest uruchomieniessh -A
zamiastssh
. Użyj aliasu, aby nie musieć go wpisywać za każdym razem ani wstawiać do swojego.SSH/config
.Istnieje wiele rozwiązań, ale najprostsze z nich znajduje się w odpowiedzi Hansa Ginzela z dnia 8 stycznia 2016 r. Na powiązane pytanie StackOverflow z dnia 27 stycznia 2014 r . Po prostu dodaj do swojej powłoki
~/.profile
lub podobnego:Nie ma potrzeby definiowania funkcji wieloliniowych ani tworzenia nowych plików tymczasowych. Jeśli nie chcesz aliasu
ssh
, po prostu zmień go nafixssh
i usuń&& ssh
na końcu i uruchomfixssh
za każdym razem, gdy próbujesz uruchomićssh
od wewnątrz dołączonej sesji tmux.Odpowiedź Hansa Ginzela sugeruje, że do uruchomienia wymagana jest „nowsza wersja” tmux
show-env -s
. Działa to na mnie w tmux 2,7, a na mojej lektury changelogu ,-s
dodano w dniu 3 czerwca 2008 roku, tuż przed wydaniem tmux 0,3. tmux 2.3 (29 września 2016) jest w stabilnej wersji Debiana.źródło