tmux: [yinelenen] üzerinde aracı yönlendirme (ssh -A) olsa da, tmux içinden SSH yapılamıyor.


5

Bu sorunun burada zaten bir cevabı var:

Bu yüzden MacBook'umda yerel olarak depolanan bazı sunucuların anahtarlarına sahibim, ancak bir Sanal Makinenin içinden önemli bir süre çalışıyorum, bu yüzden VM ile SSH ssh -A. Bu, bana VM içinden sunuculara SSH yapmamı sağlıyor.

Yakın zamanda terminal pencerelerimi daha iyi yönetmek için tmux kullanmaya başladım, ancak tuhaf bir sorun keşfettim. Tmux'ta açtığım ilk pencere SSH'yi kullanabilirken, açılan diğer pencereler kullanamaz. ssh-add bu tmux penceresinin içinden SSH aracımla hiçbir bağlantı açılamayacağını gösteriyor. Tmux'un SSH ajan iletme ile nasıl güzel bir şekilde oynanacağına dair bir fikrin var mı?


Yanıtlar:


7

VM'nizle ikinci bir bağlantı kurduğunuzda, farklı bir SSH_AUTH_SOCK çevre değişkeni, ancak tmux ve altındaki işlemler sadece eski değeri bilecektir.

Mevcut bir oturuma eklediğinizde, tmux ana prosese bazı ortam değişkenlerini güncellemesini söyleyebilir. SSH_AUTH_SOCK zaten listede, ancak özel ~/.tmux.conf:

set -ga update-environment " FOO BAR"

Ancak, bu sadece etkileyecektir yeni tmux pencereler önek c . Tmux'un çalışmakta olan işlemlerin (mermiler vb.) Ortamını güncellemesi mümkün değildir.


OpenSSH ile tekrar kullanabilirsiniz. aynı Birden fazla oturum için SSH bağlantısı SSH_AUTH_SOCK.

  1. Ana bağlantı başlat:

    ssh -AfNMS ~/.ssh/myvmhostname.socket myvmhostname
    
  2. Üzerine bir oturum açın:

    ssh -S ~/.ssh/myvmhostname.socket myvmhostname
    

(Otomasyonu için -M ve -S, bakın ControlMaster / ControlPath içinde ssh_config manuel sayfa.)


3

Merhaba, bunun eski bir soru olduğunu biliyorum. Ama bunu buldum sayfa temel olarak saing bunu VM'nizdeki .bashrc dosyasına ekleyin. Temelde ssh soketinizi tahmin edilebilir bir hedefe bağlar. TBH bu bir güvenlik sorunu olabilir, ancak makine yöneticisi iseniz (güvenlik konusunda uzman değilim): Çok büyük bir sorun olacağını düşünmüyorum

(Marks blogundan)

.Bashrc veya .zshrc dosyanıza aşağıdakileri ekleyin:

# Predictable SSH authentication socket location.
SOCK="/tmp/ssh-agent-$USER-screen"
if test $SSH_AUTH_SOCK && [ $SSH_AUTH_SOCK != $SOCK ]
then
    ln -sf $SSH_AUTH_SOCK $SOCK
    export SSH_AUTH_SOCK=$SOCK
fi

1
Güvenlik probleminden kaçınmak için bağlantıyı ~/tmp ziyade /tmp.
Blaisorblade
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.