3. makineye tünel oluşturmak için ssh yapılandırma dosyası ayarlarını düzeltin


20

Bir köprü sunucusu üzerinden bir sunucuya tünel açmaya çalışıyorum. Şimdiye kadar, aşağıdaki komutu kullanarak komut kabuğundan düzgün çalışmasını sağlayabildim:

ssh -A -t bridge_userid@bridgemachine.com ssh -A remote_userid@remoteserver.com

Ama bunu dosyama sarmaya çalışıyorum ~/.ssh/configve sıkıntılarım var. Denedim:

Host axp
  User          remote_userid
  HostName      remoteserver.com
  IdentityFile  ~/.ssh/id_rsa.eric
  ProxyCommand ssh -A -t bridge_userid@bridge_userid.com ssh -A remote_userid@%h

Ama yaptığımda, aşağıdaki hata iletisini alıyorum remoteserver.comve neye neden olduğundan emin değilim:

ksh: SSH-2.0-OpenSSH_6.8 ^ M: bulunamadı

Giriş remoteserver.comyaptığımda kabuğumun olduğunu biliyorum /usr/bin/ksh.

Yapılandırma dosyasındaki ssh komutlarına yol bağımsız değişkenleri eklemeye çalıştım, ancak hiçbir fark yaratmadı.

Ne olabileceğine dair bir fikrin var mı?


Bu sadece nasıl ProxyCommandkullanılacağı değil. Tipik olarak, ssh'nin çıkışını içinden geçirdiği netcat ile kullanılır ve netcat uzaktan kumanda SSH portuna tünel görevi görür . Bu ssh -W %h:%p bridge_userid@bridgemachine.comözelliği kullanmak istiyorsanız ProxyCommand gibi bir şeye ihtiyacınız vardır .
DanSut

Ne yazık ki köprü sunucumda yüklü netcat yok, bu yüzden başka bir şekilde çalışmasını sağlamaya çalışıyorum. Komut satırından çalışabileceğini düşündüm, bir yapılandırma dosyasına bilgi koymak için bir yol olmalıdır.
Eric

ssh -A remote_userid@remoteserver.comKöprü makinesinde çalıştırmak için bir komut olarak verdiğiniz çalışan komut satırı kullanımınızda , yapılandırma size varsayılan komutları sağlamanın bir yolunu vermez. Yapmanız girişiminde Ne worksArdından kullanmak ssh denemeden kendi içinde ama ProxyCommandbir tünel olarak ve diğer uçta bir kabuk bekleyen ziyade SSH protokolü için bir sshd dinleme olduğu yerde onun aşağı SSH protokolü ateş etmeye başlar.
DanSut

@dansut harika çalıştı. Teşekkür!
Eric

Yanıtlar:


25

Jakuje'nin cevabı doğrudur, ancak OpenSSH'den beri , daha kolay olanı 7.3kullanabilirsiniz -J ProxyJump. Notlarıma bakın:

OpenSSH 7.3veya üstü

Kullanın ProxyJump. Kılavuzda açıklandığı gibi:

-J [kullanıcı @] ana bilgisayar [: bağlantı noktası]
Önce atlama ana bilgisayarına bir ssh bağlantısı yaparak ve daha sonra oradan nihai hedefe bir TCP iletimi oluşturarak hedef ana bilgisayara bağlanın. Birden çok atlama şeridi virgül karakterleriyle ayrılmış olarak belirtilebilir. Bu bir ProxyJump yapılandırma yönergesi belirtmek için bir kısayoldur.

ProxyJump ~/.ssh/configörneği

~/.ssh/config

Host server1
  Hostname server1.example.com
  IdentityFile ~/.ssh/id_rsa

Host server2_behind_server1
  Hostname server2.example.com
  IdentityFile ~/.ssh/id_rsa
  ProxyJump server1

İle bağlantı

ssh server2_behind_server1 -v

-vAyrıntılı çıktı için ekle

ProxyJump -JKomut satırı örneği

~/.ssh/config

Host server1
  Hostname server1.example.com
  IdentityFile ~/.ssh/id_rsa

Host server2
  Hostname server2.example.com
  IdentityFile ~/.ssh/id_rsa

İle bağlantı

ssh server2 -J server1 -v

Ya da kullan -o

ssh server2 -o 'ProxyJump server1' -v

OpenSSH 5.4veya üstü

kullanımı ProxyCommandile-W

~/.ssh/config

Host server1
  Hostname server1.example.com
  IdentityFile ~/.ssh/id_rsa

Host server2
  Hostname server2.example.com
  IdentityFile ~/.ssh/id_rsa
  ProxyCommand ssh server1 -W %h:%p

İle bağlantı

ssh server2 -v

Ya da kullan -o

ssh server2 -o 'ProxyCommand ssh server1 -W %h:%p' -v

OpenSSH feryat 5.4

~/.ssh/config

Host server1
  Hostname server1.example.com
  IdentityFile ~/.ssh/id_rsa

Host server2
  Hostname server2.example.com
  IdentityFile ~/.ssh/id_rsa
  ProxyCommand ssh server1 nc %h %p 2> /dev/null

İle bağlantı:

ssh server2 -v

Ya da kullan -o

ssh server2 -o 'ProxyCommand ssh server1 nc %h %p 2> /dev/null' -v

Kaynaklar

-JOpenSSH 7.3'e eklendi

  • ssh (1): Bir veya daha fazla SSH burcundan veya "atlama ana bilgisayarlarından" basitleştirilmiş dolaylama sağlamak için bir ProxyJump seçeneği ve karşılık gelen -J komut satırı bayrağı ekleyin.

-WOpenSSH 5.4'e eklendi

  • Ssh (1): "ssh -W host: port ..." öğesine bir 'netcat modu' eklendi. Bu, istemcideki stdio'yu sunucudaki tek bir bağlantı noktasına bağlar. Bu, örneğin bağlantıların ara sunucular üzerinden yönlendirilmesi için ProxyCommand olarak ssh kullanılmasına izin verir. bz # 1618

3

Köprünüze ihtiyacınız yok netcat. DanSut'un yorumlarda önerdiği gibi, ssh -Wbunun yerine komut satırı seçeneğini kullanabilirsiniz , bu yapılandırma sizin için çalışmalıdır:

Host axp
  User          remote_userid
  HostName      remoteserver.com
  IdentityFile  ~/.ssh/id_rsa.eric
  ProxyCommand ssh -AW %h:%p bridge_userid@bridge_userid.com

İşe yaradı. Teşekkürler. Neden olduğundan emin değilim, ama bir kez başarısızlıkla uğraştığımdan eminim, ama tekrar başarılı bir şekilde denedim. Teşekkürler.
Eric
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.