Saya memiliki kunci pribadi yang disiapkan untuk akun github saya, frasa sandi yang, saya percaya, simpan di gantungan kunci OS X. Saya tentu tidak perlu mengetikkannya ketika saya membuka jendela terminal dan masuk ssh [email protected]
.
Namun, ketika saya menjalankan bash di atas sesi ssh, atau secara lokal di dalam sesi tmux, saya harus mengetikkan frasa sandi setiap kali saya mencoba ssh ke github.
Pertanyaan ini menunjukkan bahwa ada masalah yang sama dengan layar, tapi saya tidak benar-benar memahami masalah dengan cukup baik untuk memperbaikinya di tmux. Ada juga halaman ini yang menyertakan solusi yang cukup rumit, tetapi untuk zsh.
EDIT :
Menanggapi jawaban @ Mikel , dari terminal lokal saya mendapatkan output berikut:
[~]
$ 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"
Sedangkan lebih dari ssh atau dalam tmux saya dapatkan:
[~]
$ 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
tidak mengembalikan apa pun shell yang saya jalankan.
typeset -p SSH_AUTH_SOCK
?bash: typeset: SSH_AUTH_SOCK: not found
dari dalam ssh / tmux. Saya akan mencobanya secara lokal malam ini, jika perlu.Jawaban:
Kolega saya membuat beberapa fungsi bash untuk membantu menemukan agen langsung: https://github.com/wwalker/ssh-find-agent
Dia menggunakannya terutama untuk menghubungkan antar sistem (laptop ke desktop, dll), tapi saya paling sering menggunakannya untuk sesi tmux lokal di mana Anda logout / in dari window manager Anda (OS X untuk saya sendiri).
Pemakaian
Unduh ssh-find-agent.bash (
git clone git://github.com/wwalker/ssh-find-agent.git
berfungsi).Tambahkan yang berikut ke ~ / .bashrc:
Kemudian Anda dapat mengetik yang berikut untuk mengatur SSH_AUTH_SOCK di shell Anda saat ini:
sumber
Solusi elegan, diambil dari dagit.o :
Membuat
~/.ssh/rc
Tambahkan
~/.tmux.conf
sumber
Di
.tmux.conf
file konfigurasi Anda , tambahkan baris ini:Ini menyebabkan variabel lingkungan ini akan disalin dari shell utama Anda ke semua shell yang dibuka dalam tmux, yang kemudian memungkinkan ssh-agent bekerja dengan baik di dalam shell tmux tersebut.
sumber
update-environment
. OP harus memeriksaupdate-environment
nilainya dan mungkin memperbarui di mana pun ia telah diubah.update-environment
diatur dengan benar. Namun, masalahnya tetap terjadi.tmux
server, menentang tujuan melampirkan kembali ... Mungkin ada saklar baris perintah untuk memperbarui kembali variabel-variabel itu?Itu terjadi pada saya bahwa panel yang dibuat ketika menghubungkan melalui ssh dari OS X mulai menanyakan frasa sandi saya setelah beberapa saat berfungsi ok. Saya menemukan cara untuk memperbaiki yang mencuri baris ini dari http://santini.di.unimi.it/extras/ph/my-tmux-setup.html
Jalankan saja dari panel yang mengeluh.
sumber
Tidak yakin apakah Anda menggunakan bash atau shell lain, tetapi setup tmux orang ini sepertinya akan bekerja untuk bash. Secara pribadi, saya menggunakan zsh dengan oh-my-zsh , dan saya menemukan bahwa ssh-agent mulai bekerja di tmux setelah saya menambahkan
ke file .zshrc saya dan memuat ulang konfigurasi di sesi zsh saya yang sedang berjalan. Saya juga menemukan solusi berorientasi zsh orang ini , tetapi ternyata tidak perlu bagi saya.
sumber
Apa yang dilakukan:
mencetak?
Jalankan di terminal normal Anda, lalu jalankan di dalam
tmux
sesi Anda . Mereka harus mencetak hal yang sama.sumber
ssh
gampang. Aktifkan penerusan agen. Cara termudah untuk melakukannya adalah menjalankanssh -A
alih-alihssh
. Gunakan alias sehingga Anda tidak perlu mengetiknya setiap waktu, atau memasukkannya ke dalam.SSH/config
.Ada banyak solusi, tetapi yang paling sederhana ditemukan dalam jawaban Hans Ginzel, tertanggal 8 Januari 2016, untuk pertanyaan terkait StackOverflow tertanggal 27 Januari 2014 . Cukup tambahkan berikut ini ke shell Anda
~/.profile
atau yang serupa:Tidak perlu mendefinisikan fungsi multi-line atau membuat file sementara baru. Jika Anda tidak ingin alias
ssh
, cukup ubah kefixssh
dan hapus&& ssh
di akhir, dan jalankanfixssh
setiap kali Anda mencoba menjalankanssh
dari dalam sesi tmux yang disambungkan kembali.Jawaban oleh Hans Ginzel menunjukkan bahwa 'versi yang lebih baru' dari tmux diperlukan untuk dijalankan
show-env -s
. Ini berfungsi untuk saya di tmux 2.7, dan pada bacaan saya tentang changelog ,-s
ditambahkan pada 3 Juni 2008 sebelum rilis tmux 0.3. tmux 2.3 (29 September 2016) ada di stabil Debian.sumber