Ssh-agent'ı ssh ve tmux üzerinde (OS X'te) nasıl çalıştırabilirim?


17

Github hesabım için özel bir anahtarım var, inanıyorum ki, OS X'in anahtarlığında saklanan parola. Terminal penceresini açıp girerken yazmam gerekmiyor ssh git@github.com.

Ancak, bir ssh oturumu veya yerel olarak bir tmux oturumu içinde bash çalıştırdığımda, ssh to github için her denemede parolayı yazmak zorundayım.

Bu soru , ekranda benzer bir sorunun var olduğunu gösteriyor, ancak sorunu tmux'da düzeltmek için yeterince iyi anlamıyorum. Ayrıca oldukça karmaşık bir çözüm içeren bu sayfa var, ancak zsh için.

DÜZENLE :

Cevaben Mikel cevabı @ , aşağıdaki çıktıyı almak yerel bir terminalden:

[~]
$ 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"

Halbuki ssh üzeri veya tmux'da:

[~]
$ 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 koştuğum kabuk ne olursa olsun hiçbir şey döndürmez.


Ne olmuş typeset -p SSH_AUTH_SOCK?
Mikel

@ bash: typeset: SSH_AUTH_SOCK: not foundSsh / tmux içinden Mikel . Gerekirse bu akşam yerel olarak deneyeceğim.
Zengin

@Mikel Bu komutun çıktısını soruya ekledim.
Zengin

AFAIK, soru ve cevaplar OS X'e özgü değildir. Yani olmayan bazı OS X özgü dups, yani önlemek alakalı superuser.com/q/334975/46794 ve superuser.com/q/479796/46794 .
Blaisorblade

@Blaisorblade Parolamın OS X anahtarlığında saklandığı izlenimindeydim (Neden böyle olduğuna inandığımı hatırlamıyorum). Bu yanlış mı?
Zengin

Yanıtlar:


4

Meslektaşım, canlı bir ajan bulmada yardımcı olmak için bazı bash işlevleri oluşturdu: https://github.com/wwalker/ssh-find-agent

Esas olarak sistemler arasında (dizüstü bilgisayardan masaüstüne vb.) Bağlanmak için kullanıyor, ancak çoğunlukla pencere yöneticinizden (kendim için OS X) oturum açtığınız yerel tmux oturumları için kullanıyorum.

kullanım

  1. Ssh-find-agent.bash indir ( git clone git://github.com/wwalker/ssh-find-agent.gitçalışır).

  2. Aşağıdakileri ~ / .bashrc dizinine ekleyin:

    . /path/to/ssh-find-agent.bash
    
  3. Ardından, geçerli kabuğunuzda SSH_AUTH_SOCK değerini ayarlamak için aşağıdakileri yazabilirsiniz:

    set_ssh_agent_socket
    

Daha doğrusu başkalarının daha bu cevabı kabul o kudreti çalışması nedeniyle değil benim amaçlar için iyidir SSH ajanı iletmeyi; gereklidir. Teşekkürler!
Zengin

8

Dagit.o'dan alınan zarif bir çözüm :

Oluşturmak ~/.ssh/rc

#!/bin/bash
if [ -S "$SSH_AUTH_SOCK" ]; then
    ln -sf $SSH_AUTH_SOCK ~/.ssh/ssh_auth_sock
fi

a ekle ~/.tmux.conf

set -g update-environment "DISPLAY SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"
set-environment -g 'SSH_AUTH_SOCK' ~/.ssh/ssh_auth_sock

7

Senin içinde .tmux.confyapılandırma dosyası, bu satırı ekleyin:

-g güncelleme ortamı "SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION"

Bu, bu ortam değişkenlerinin ana kabuğunuzdan tmux içinde açılan herhangi bir kabuğa kopyalanmasına neden olur, bu da ssh-agent'ın bu tmux kabukları içinde düzgün çalışmasına izin verir.


2
Bu, bu değerleri bir tmux oturumuna almak için uygun yöntemdir , ancak bu ortam değişkenlerinin tümü zaten varsayılan değerine dahil edilmelidir update-environment. OP update-environmentdeğerlerini kontrol etmeli ve muhtemelen değiştirildiği her yerde güncellenmelidir.
Chris Johnsen

1
Hm .. daha fazla kazdıktan sonra, katılıyorum - listelediğim ayarlar zaten varsayılanlarda ve eğer tmux'u bir .tmux.conf dosyası olmadan çalıştırırsam, her şey düzgün çalışır. Ve alıntıladığım satırı .tmux.conf dosyamdan kaldırırsam, daha önce olmasa da benim için de işe yarıyor. Bazen yanlış giden başka bir şey var. Belki bir tmux oturumuna uzaktan askıya alma / geri yükleme veya ekleme / çıkarma veya sshing ile ilgilidir. Tekrarlanabilir kılan faktörü bulursam gözlerimi açık tutacağım ve güncelleyeceğim.
Trevor Powell

update-environmentdoğru ayarlanmış. Ancak, sorun yine de oluşur.
Zengin

2
Bu sorun, yapılandırma sadece yeniden tmuxsunucu amacı, yeniden ekleme amacı reddederek yeniden yürütülecek ... Belki bu değişkenleri yeniden güncelleştirmek için bir komut satırı anahtarı var?
Tobias Kienzler


2

Bash veya başka bir kabuk kullanıp kullanmadığınızdan emin değilsiniz, ancak bu adamın tmux kurulumu bash için çalışacak gibi görünüyor. Şahsen, oh-my- zsh ile zsh kullanıyorum ve ssh-agent'ın tmux'da çalışmaya başladıktan sonra buldum

zstyle :omz:plugins:ssh-agent agent-forwarding on

benim .zshrc dosyama ve çalıştırılan zsh oturumlarımda yapılandırmayı yeniden yükledi. Ayrıca bu adamın zsh odaklı çözümünü buldum , ama benim için gereksiz olduğu ortaya çıktı.


1

Nedir:

echo $SSH_AUTH_SOCK
echo $SSH_AGENT_PID
ssh-add -l

Yazdır?

Normal terminalinizde çalıştırın, ardından tmuxoturumunuzun içinde çalıştırın . Aynı şeyi basmalılar.


Bu komutlara verilen yanıtı soruya ekledim. Ayrıca ssh (tmux kullanmadan) üzerinden oturum açtığımda da sorunun oluştuğunu fark ettim ve soruyu buna göre düzenledim.
Zengin

4
sshkolay. Ajan yönlendirmeyi açın. Bunu yapmanın en kolay yolu ssh -Ayerine çalıştırılır ssh. Her zaman yazmak veya içine koymak zorunda kalmamak için bir takma ad kullanın .SSH/config.
Mikel

Harika, teşekkürler. Bu ssh için çalıştı. Herhangi bir fikir nasıl tmux içinde düzeltmek için?
Zengin

0

Birçok çözüm var, ancak en basit çözüm Hans Ginzel'in 8 Ocak 2016 tarihli cevabında 27 Ocak 2014 tarihli ilgili StackOverflow sorusuna cevap verdi . Kabuğuna ~/.profileveya benzerine aşağıdakileri eklemeniz yeterlidir :

alias ssh='eval $(tmux show-env -s | grep "^SSH_") && ssh'

Çok satırlı işlevler tanımlamaya veya yeni geçici dosyalar oluşturmaya gerek yoktur. Takma ad istemiyorsanız ssh, bunu son olarak değiştirin fixsshve && sshsonunda kaldırın ve yeniden bağlanmış bir tmux oturumunun içinden fixsshkaçmaya çalıştığınızda çalıştırın ssh.

Hans Ginzel'in cevabı, tmux'un 'daha yeni bir versiyonunun' çalıştırılması gerektiğini gösteriyor show-env -s. Tmux 2.7'de benim için bu eserler ve benim okuma değişmek , -ssadece tmux 0.3 yayınlanmadan önce 3 Haziran 2008 tarihinde eklendi. tmux 2.3 (29 Eylül 2016) Debian istikrarlı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.