ProxyCommand ve netcat modunu kullanırken ssh'ın ana bilgisayar adlarını config'ten çözmesini sağlayın


16

Ssh bağlantılarını zıplatmak için bazı evrensel seçenekler ayarlamaya çalışıyorum. İşte benim ~/.ssh/configdosyam, kısaltılmış:

Host *%via
  ProxyCommand ssh gateway -W $(echo %h | cut -d%% -f1) %p

Host gateway
  HostName gateway.example.com
  User username
  ForwardAgent yes
  IdentityFile keypathg

Host target
  User username
  HostName target.example.com
  IdentityFile keypatht

Takma adları *%viakullanarak kullandığımda Host:

% ssh -vvv target%via
OpenSSH_5.9p1, OpenSSL 0.9.8y 5 Feb 2013
debug1: Reading configuration data /Users/myuser/.ssh/config
debug1: /Users/myuser/.ssh/config line 5: Applying options for *
debug1: /Users/myuser/.ssh/config line 12: Applying options for *%via
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/Users/myuser/.ssh/tmp/target%via_22_myuser" does not exist
debug2: ssh_connect: needpriv 0
debug1: Executing proxy command: exec ssh -A gateway -W $(echo target%via | cut -d% -f1):22
debug1: permanently_drop_suid: 501
debug1: identity file /Users/myuser/.ssh/id_rsa type -1
debug1: identity file /Users/myuser/.ssh/id_rsa-cert type -1
debug1: identity file /Users/myuser/.ssh/id_dsa type -1
debug1: identity file /Users/myuser/.ssh/id_dsa-cert type -1
ssh_exchange_identification: Connection closed by remote host

Ancak, eğer kullanırsam

% ssh target.example.com%via

Hedef sunucuyu vurdum, ancak yanlış kullanıcı olarak ve pubkey kimlik doğrulaması olmadan.

Ben düşünüyorum sorum, bu noktada, yararlanırken, zıplayan bu yöntemi yok olduğunu ForwardAgent, benim ssh yapılandırma / tüm çevre ya da sadece tuşları geçmektedir. Sadece anahtarlar ise, eski anahtar bir şekilde kullanılabilir mi?

Ssh sürümüm 5.9v1, ağ geçidi 5.9v1 ve hedef 5.3p1. -W5.4'te tanıtıldığına inanıyorum , ancak bu son kutu için önemli değil mi? eski okulu kullanmak ncfarklı görünmüyor.

Satırdaki her kutuya manuel olarak ssh yapabileceğimi doğruladım. Bunu yaptığınızda, ana bilgisayar adı diğer adı bilgilerinin geçilmediğini, ağ geçidindeyken olduğu gibi ssh targetyapamadığımı gösterir ssh target.example.com. Bu pubkey auth ile çalışır. ağ geçidi ve hedef tesadüfen aynı kullanıcı adına sahiptir, bu yüzden hiçbir yapılandırma itilmezse bu çalışır.

Eğer ForwardAgentveya benzer yapılandırma bu bilgiyi itemezsiniz, etrafında almak için sanest yolu bu bilgileri içeren bir .ssh / config üzerinde ağ geçidini tutarak ne?

Yanıtlar:


14

Vay be, bu soruyu sorduğun için teşekkürler. Birinin SSH'yi tam olarak sömürdüğünü görmek nadir görülür ve bu soru birkaç alanda ortaya çıkar.

Bu bir ProxyCommandsorun değil . ProxyCommandSadece uzaktan istemci konuşmaya çalışıyorum önce hazırlık şeyler yapmaya yerel ssh istemcisi talimatını verir. Evet, örneğimizde, başka bir ssh oturumuyla konuşuyoruz, ancak bu oturum, -Wsadece girdimizi alıyor ve başka bir makineye iletiyor. Hazırlık ssh oturumunun tamamen bağımsız olduğunu düşünebilirsiniz. Kaçınılmaz araba benzetmesi: A noktasından B noktasına gitmek için bir feribota binmeniz gerekip gerekmediğine bakılmaksızın, aracınız aynı otomobildir.

Bu bir ForwardAgentsorun değil . ForwardAgentyerel istemcinin, uzak oturum ortamında yerel anahtarları kullanılabilmesini sağlayan bir olanak sağlaması. Uzak oturumu kurmak için geçmişte kalmadınız.

Bu bir .ssh/configbiçim sorunudur. İkinci ve üçüncü hata ayıklama1 satırlarına dikkat edin. Hangi Host stanzas'ının uygulandığını listeler .ssh/config. Bunun $ ssh target.example.com%viaişe yaradığını, ancak yanlış kullanıcı adı ve anahtar olduğunu unutmayın . Eh, için stanza Host targetokunmuyor (doğru kullanıcı adını ve anahtar dosyasını sağlayacaktır). Hangi stanzalar kullanılıyor? *ve *%via.

Bu seçeneklerden nasıl yararlanılır? Yeterince ilginç, joker karakter 0 uzunluk dizesiyle eşleşir. Host target*maç olacak target, target%via, target.example.comve target.example.com%via.

Ve böylece soruyu sorarsınız .ssh/config, gatewaymakine yardımı üzerinde bir ayar yaparsınız . Hayır. Asla okunmazdı. Her şey yerel makinemizden oluyor.

Tüm açıkladığım, sadece neden $ ssh target.example.com%viaişe yaramadığını cevaplıyor .

Siz tercih edersiniz $ ssh target%via. Haklı olarak, daha uygun. Kısa form başarısız çünkü bir ana bilgisayar adı olarak targetbulunamıyor; çözümlenmiyor. Neden ssh püsküren değildir değildir: ssh: Could not resolve hostname target: Name or service not known? Çünkü ProxyCommandzaten başarıyla kuruldu. Bir ssh bağlantısının unsurları oluşturuldu, ancak ana bilgisayar adı hatası beklemediği yerde gerçekleşiyor ve bu nedenle daha genel bir mesajla bombalanıyor. Hata ayıklama bilgilerinin nerede geliştirilebileceğini belirlemeye yardımcı olmak için bu konuda bir hata raporu hazırlarım.

Nihai yorum:

Host *%viaSözdizimini seviyorum . Temiz, ama esnek. Daha önce görmüştüm Host *+*ve %h(ost)nereye gideceğini belirlemek için hem ilk hem de son bölümünü kullanır . Ama zihninizi bunun etrafında bulmak biraz daha fazla çaba gerektirir. bağlantı: http://wiki.gentoo.org/wiki/SSH_jump_host

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.