Doğrudan erişemediğim bir sunucuya ssh nasıl yapılır?


17

bağlam

Ubuntu Desktop'ı D olarak adlandıracağım birincil makine olarak kullanıyorum. Ssh sunucusuna ssh üzerinden bağlanmak istiyorum, ancak güvenlik duvarı beni engelliyor.

Windows sanal makine ve PuTTY içeren çok hantal bir yolla sunucu S'ye erişebiliyorum . Bu, bu sunucu ile çalışmayı son derece can sıkıcı hale getirir: tamamen farklı bir ortam, kopyala / yapıştır çalışmıyor, masaüstümü bağlıyken düzgün bir şekilde kullanamıyorum (Alt-Tab Sanal Makine tarafından bozuldu) vb.

Sunucu S'den masaüstü makinem D'ye (ihtiyacımın tam tersi) ssh yapabileceğimi doğruladım.

Bir şekilde masaüstümden sunucuya ssh yapabilmem için bir şekilde sunucudan "port yönlendirme" veya benzeri bir şey başlatabilir miyim?


2
Ana bilgisayarlar ... onları sevmeliyim !!!
RonJohn


muru bu farklı bir senaryo, ama tabii ki ilgili (sonuçta tünelleme ile ilgili!). Bu durumda D->Skötüye kullanarak sahte olmak istiyorumS->D
dangonfast

Yanıtlar:


32

Uzak sunucudan yerel makinenize bir SSH tüneli kurmak için aşağıdaki komutu kullanabilirsiniz:

$ ssh -f -N -R 1234:localhost:22 user@your_machine_ip

Tünel kurulduğunda, aşağıdaki komutu kullanarak uzak sunucunuza ssh yapabilirsiniz:

$ ssh -p 1234 user@localhost

Otomatik oturum açma için ssh tuşlarını ayarlamanız gerektiğini lütfen unutmayın (şifre istemi yok). SSH tünelini etkileşimli olarak oluşturmak istiyorsanız, seçenekleri kaldırabilirsiniz -f -N. Daha fazla bilgi için man ssh,.


Bu tünel Windows VM üzerinden nasıl? (
Çalıştığım

@RonJohn Bunun sunucudan masaüstüne (OP) ssh-in çalıştığı gerçeğini kullandığına inanıyorum, bu yüzden sunucudan (bağlantı noktası 22) doğrudan masaüstü makinesine (bağlantı noktası 1234) kullanılabilecek bir tünel kurar sunucuda ssh'a bağlanmak için (port 22'yi kullanır). Windows VM yalnızca tüneli kurmak için kullanılır. (yanlışsam lütfen beni düzeltin)
pizzapants184

@dangonfast Cevaba ek olarak aşağıdaki değer belgesini de bulabilirsiniz: spencerstirling.com/computergeek/sshtunnel.html
Pryftan

@RonJohn Bağlantı kurduğum belge, en azından güvenlik duvarlarının birden çok katmanı vb. Kadar da bu soruyu cevaplamaya yardımcı olabilir (eğer bellek bana doğru hizmet ediyorsa - okuduğum çok uzun zaman oldu. yıllar önce bağlantıya sahip olduğunu hatırladı).
Pryftan

1
@ pizzapants184, bu benim başlangıç ​​noktamdı: S -> D'den ssh, bu yüzden direclty çalışmalarına rağmen, etkili bir şekilde D -> S yapmak için kötüye kullanmak istiyorum. Ağ neden bu şekilde yapılandırılmış, beni kurtaran bir şey. Kasıtlı veya yanlış bir konfigürasyon olabilir, ancak benim için çalıştığı sürece ...
dangonfast

5

Daha yeni bir OpenSSH (7.3+) sürümü çalıştırıyorsanız, ProxyJumpher şeyi sihirli bir şekilde birlikte pişiren kullanabilirsiniz :

ssh -J windows_machine remote_server

Hangisine ~/.ssh/configbenziyor:

Host remote_server
        HostName remote_server
        ProxyJump windows_machine
        User myname

ProxyJumpsen eğer öyleyse, tam SSH sözdizimi destekler jimüzerinde windows_serverve bağlantı noktasını kullanır 2222ssh için. remote_serverIP'sindeki olduğu 192.168.0.110gelen windows_servero zaman yazabilirsiniz:

Host remote_server
        HostName 192.168.0.110
        ProxyJump jim@windows_machine:2222
        User myname

Ve halassh remote_server oraya gitmek için koş .


SSH'nin daha eski bir sürümünü kullanıyorsanız, ProxyCommand kullanın - bu, SSH'ye gerçek SSH komutunu çalıştırmadan önce bir proxy bağlantısı kurmak için bir komut çalıştırmasını söylemenizi sağlar.

ssh -o ProxyCommand='ssh -W %h:%p windows_machine' remote_server

Bu , daha gizli netcat sözdizimi için kısayol olan SSH -W seçeneğini kullanır .

Çalıştırdığınızda olarak, o Not ssh remote_serverüzerinde şimdi windows_machinesize IP'sini kullanmasını sağlamak için gereken remove_server atlama kutusundan bunlar iyi aynı olabilir - makinenizden IP yerine.

Daha sonra bu yönergeyi ~/.ssh/configdosyanıza ekleyebilirsiniz :

Host remote_server
  HostName remote_server
  User myname
  ProxyCommand ssh -W %h:%p windows_machine

Eğer bu vasıta remote_server olan farklı bir makine görüldüğü haliyle windows_machineo zaman config koyup yine sadece kullanabilirsiniz ssh remote_server.


1
Bu çok daha iyi bir cevap.
Robert Riedl

Yararlı olsa da, bu sorulan soruya cevap vermez. OP, SSH'yi D-> S'den (istediklerini) yapamayacaklarını, ancak SSH'yi S-> D'den yapabileceğini belirtir. Arada ssh proxy'si yoktur (bunun yerine muhtemelen RDP tarafından erişilen windows sanal makinesi vardır).
mbrig

@mbrig gerçekten. Bu çözümü denemedim, ancak çalışırsa
şaşırırdım

Ama diyorsun ki Windows makinesine gidebilirsin - bundan sonra seninle diğer makine arasında bir atlama kutusu olarak hareket edebileceğini anladım.
Örümcek Boris

1
Windows makinesine özel bir araçla (VMWare Horizon) giriş yapabilirim. Asla ssh yapabileceğimi söylemedim. Hatta bu soruyu Putty companion ssh sunucusunu (adı unuttum) yükleyerek göndermeden önce test ettim, ancak testlerim başarısız oldu. SSH'nin windows alt ağına da güvenlik duvarı olduğunu varsayıyorum.
dangonfast

1

Bir şeyleri atlatmaya ve kıvrımlı bir yol oluşturmaya çalışmak yerine, masaüstünüzden sunucuya SSH'ye izin verilmesini isteyemez misiniz? Buna ihtiyacınız varsa ve sunucuya erişmeniz gerekiyorsa, isteği neden reddettiğinizi göremiyorum.


Downvote'u açıklamak ister misiniz? Soru "Doğrudan ulaşamadığım bir sunucuya ssh nasıl yapılır?" bu yüzden cevabımın geçerli olmasına izin vermek için bir güvenlik duvarı kuralı koymak. İyi güvenlik uygulamalarına göre etrafta dolaşmanın doğru yolu da budur.
Solarflare

Büyük bir kurumsal müşterinin üç aylık sözleşmesinin ilk haftasındayım. Bana bir dizüstü bilgisayar (benim kullanıyorum) ve zar zor bir masa verildi. Farklı hizmetleri kullanmak için düzinelerce kimlik bilgim var ve her şeyi dengelemek için neredeyse hiç başaramıyorum. Yapmak istediğim işimi gerçekleştirmek için zor bir gereklilik değil: VM'de çalışabilirim ve komik sorular sormaya başlarsam patronum bana söyleyecektir. Ya da beni önümüzdeki birkaç hafta / ay boyunca kutuyu yoldan aşağı indirecek Yardım Masasına yönlendirecek.
dangonfast

Benim için VM'de çalışmak% 50 verimlilik kaybı anlamına gelecektir, bu yüzden mümkün olduğunca kaçınmak istiyorum. Yine de, bu konseri seviyorum!
dangonfast

1
Bunu anlayabiliyorum. Deneyimlerime göre, 'büyük kurumsal müşteriler', yükleniciler, fedakar amaçlar için bile olsa, işlerini yapmak için güvenlik duvarlarını ve politikalarını atlattıklarında oldukça üzülme eğilimindedir. Sunucudan masaüstünüze SSH yapabileceğiniz gerçeği, bana bunun tersini yapamamanızın bir gözetim veya belirli bir amaç için yerine getirilmiş bir şey olduğunu söylüyor.
Solarflare

4
Politikaları atlatmaktan kovulma riskinden kaçınmak istiyorsanız bu tek gerçek çözümdür ... En azından Khaleds çözümünü kullanmadan önce sorumlu kişilerle konuşun , böylece ne yaptığınızı bilin.
Sven
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.