Dinamik bir IP üzerinden Internet'e her zaman sistemime SSH atabileceğim şekilde nasıl yapılandırabilirim?


11

Temel olarak, hem ssh sunucum (Makine A) hem de ssh istemcim (Makine B) internet erişimine (ve bazı 3. sunucu, Makine C) sahip olduğu sürece, ağ yapılandırmasının ne olduğuna bakılmaksızın, ekip görüntüleyici gibi bir şey yapmak istiyorum. ), Erişim kazanabilirim - bunun nedeni, makine A'yı hareket ettirmek, güce bağlamak, önceden yapılandırılmış birkaç wifi ağından birine (her biri benzersiz / farklı) otomatik olarak bağlanmak istiyorum. , ağlarda bağlantı noktası yönlendirme veya benzeri yapılandırmaya gerek kalmadan ve Makine B'den internet üzerinden oturum açabilme

Bunu nasıl başarabilirim? El sıkışmasına yardımcı olmak için statik bir IP adresine sahip bir sunucuda bir şey ayarlamayı umursamıyorum, ancak bir şey varsa 3. taraf sunucuyu da umursamıyorum (takım görüntüleyici için olduğu gibi)

Netlik için düzenle: 3 makinem var, AB ve C

A, rastgele yerlerde açılacak / kapatılacak, önceden onaylanmış bir wifi ağına bağlanacak başsız bir ahududu pi

B, bağlanmak istediğim uygun monitör, klavye vb.

C, statik bir IP adresiyle sahip olduğum kiralanmış bir AWS sunucusudur, B'den SSH'yi güvenilir bir şekilde alabilir ve B'nin A'ya bağlanmasına yardımcı olmak için gereken her şeyi yükleyebilir


3. makineye ssh yapabilir misin?
Anthon

@Anthon Sanırım onlara AB ve C adını verdim ve onlar için açıklamalar ekledim, umarım temizler
user2813274

öksürük no-ip.com öksürük
Joshua

1
Konumunuzdaki çevre güvenlik duvarı dönüş trafiğine izin vermiyorsa no-ip.com yardımcı olmaz!
bobstro

sshKısa bir süre tünel kullanırdım . Yine de, onların ayakta kalmasını asla sağlayamadım autossh; yukarı bağlantı herhangi bir nedenle düşerse, her zaman elle yeniden başlatılması gerekir. Sonunda OpenVPN ile kendim için küçük bir VPN kurdum ve bu işi güzel yaptı.
Blacklight Shining

Yanıtlar:


11

İnternette C makinesi bulunduğundan, orada özel bir hesap yapın sesameve A'da, genel anahtarı sesameC'deki hesaba kopyaladığınız genel / özel anahtarla bir hesap yaparsınız .

Artık A'dan C'ye giriş yapabilirsiniz, ancak bunu yapmak yerine şunları yapabilirsiniz:

ssh -N -R 19930:localhost:22 sesame@yourserverC

(bunu bir uyku bildirimi veya 10 saniye ile birleştirmek ve sonsuz bir döngüde sarmak isteyebilirsiniz, böylece WiFi kesintiye neden olursa bağlantı yeniden kurulur)

B makinesinden normalde C'deki hesabınıza giriş yapın (olabilir ancak sesamehesap olmak zorunda değilsiniz , kullandığım farklı hesaplar). Ve C'ye girdikten sonra, aşağıdakileri kullanarak A'ya giriş yapın:

ssh localhost -p 19930

Tabii ki 19930'dan farklı bir sayı kullanabilirsiniz.

A üzerindeki özel anahtarınız parola korumalı değilse ssh -N -R ...from /etc/rc.localkomutunu çalıştırmak mümkündür . Bu durumda sesame, sınırlı işlevselliğe sahip ayrı bir hesap yaptığınızdan emin olun , böylece A makineniz tehlikeye girdiğinde / çalındığında, sunucu C riskiniz sınırlıdır. Bu yüzden B'den C'ye almak için ayrı bir hesap kullanmanızı öneririz.

Aslında için giriş kabuğunu ayarlayabilirsiniz sesameiçinde /etc/passwdhiç /bin/falseartık giriş için hesabınızı kullanabilmek için,.


Bu çözüm TeamViewer kullanmaktan farklıdır, sunucu daha sonra doğrudan iletişim kurmak için yönlendirilen bağlantı noktalarını açmak için kullanılır. Tıpkı BitTorrent gibi programların indirilecek makineleri bulduktan sonra doğrudan iletişim kurması gibi (bağlantı noktalarını önceden açmak zorunda kalmadan).
Anthon

Yani ana fark bu şekilde TÜM trafik sunucu C üzerinden geçer, vs C sadece bir bağlantı kurmak için kullanılan, ve sonra bağlantının geri kalanı için kullanılmayan - Ben bununla Tamam. Güvenlikle ilgili olarak iyi bir noktaya sahipsiniz, özellikle susamın giriş yapmak için minimum minimumun yanı sıra C üzerinde hiçbir şey yapamaması için yapmam gereken bir şey var mı? (RHEL sistemi)
user2813274 27:15

1
@ user2813274 Gerçekten de bu senaryoda tüm trafik C'den geçer (ki bu da BitTorrent'in faydasını alır). sesameC hesabını ne kadar sınırlayabileceğinizden emin değilim /bin/false, giriş kabuğu olarak çalışmasını sağlayabilirsiniz (ssh hiçbir zaman oturum açmadığından) veya başka bir command=parametre ekleyerek sınırlayabilirsiniz~/.ssh/authorized_keys
Anthon

@ user2813274 durumda kendini denemedim: Geriye vekil kurmak için özel bir hesap varsa, olabilir için giriş kabuk değiştirerek o hesaba oturumları devre dışı /bin/false.
Anthon

1
@ user2813274 Evet bunu denedim ve ters tüneli kurmama izin verir ssh localhost -p portnum(tabii ki sunucu C'ye ulaşmak için farklı bir hesaba ihtiyacınız var )
Anthon

7

Raspberry Pi'nize bir IPv6 tüneli ( Sixxs gibi ) kurun. Artık Pi'niz her çevrimiçi olduğunda çevrimiçi olacak kalıcı bir statik IPv6 adresiniz olacak. Pi'nizi şimdi dünyaya bağlı olduğundan koruduğunuzdan emin olun.

B'niz bir IPv6 ağına bağlıysa, doğrudan Pi'ye bağlayın. B bir IPv6 ağına bağlı değilse, atlama sunucusu olarak C'yi kullanın, burada IPv4 üzerinden C'ye bağlanır ve ardından IPv6 üzerinden ssh'yi C'den Pi'nize bağlarsınız.


Ağları IPV6'yı destekliyorsa bile C gerektirmediği için bunu seviyorum, yine de denemek zorunda kalacağım - güvenlik duvarları bunu varsayılan olarak engelleyen herhangi bir sorun mu var?
user2813274

1
Sixx'ler IPv6 tünellemesi için birden fazla protokol sağlar. Herhangi Bir Şey (AYIYA) kullanıyorsanız, Pi'den İnternet'e açık olan 3874 numaralı TCP bağlantı noktasına ve 5072 numaralı UDP bağlantı noktasına ihtiyacınız olacaktır. Ev ağlarında, bu iyi olmalı; kurumsal veya kampüs ağları farklı olabilir.
garethTheRed

Tünelin kurulması yapılabilir görünüyordu, ancak görünüşe göre Sixxs servisine kaydolmam, bana bir IP adresi ile geri dönmelerini beklemem gerekiyor - çok basit değil - hala potansiyel olarak iyi bir çözüm, ama ben Şimdilik gideceğim yol olduğunu düşünmeyin.
user2813274

1

Ayrıca şuna bir göz atın:

Kullanılan teknoloji, kabul edilen cevapta açıklanan teknolojiyle aynıdır, ancak işleri otomatikleştirmek ve çözümü daha genel hale getirmek için bazı komut dosyaları kullanır. Ayrıca, tüm yapılandırmaları bir Docker konteyneri içinde yapar, böylece bir şey tehlikeye girmesi durumunda ana sistem güvenlidir.

Ancak A'dan C'ye otomatik bağlantı sağlamaz, manuel olarak başlatılması gerekir. Belki de çözümü tam olarak ne istediğinizi yapacak şekilde özelleştirebilirsiniz.


0

Belki de ssh veya tünelleme konsepti dışında kullanmanız gerekir .. whatsapp veya telgraf gibi mesajlaşma konseptini kullanmanızı öneririm. Ama bence, vim gibi bir şey kullanmak istiyorsanız, ssh kadar iyi değil ..

Telegram, belirli bir komutu kabul etmek ve yürütmek ve raspi'de uygulamak için değiştirebileceğiniz telgraf-cli istemcisine sahiptir.

Telegram kullanıyorsanız, ağınızı basitleştirebilir ve en azından C makinesini Hub yapmak için azaltabilirsiniz çünkü C sunucusu telgraf mesajlaşma sunucusuyla altyazılıdır .. telgraf zaten iphone ve android istemcisi ile gelir, bu yüzden B'ye ihtiyacınız olduğunu düşünmüyorum Makine de, isterseniz belirli bir işletim sistemi için telgraf istemcisi yükleyebilirsiniz .. güvenlik? telgraf mesajı yazılmıştır .. Eğer birisi raspi ddos ​​ister misiniz? önce telgraf sunucusuna ddos ​​yapacaklar ..

Raspi'niz telgraf sunucusuna bağlanabildiği sürece (sadece raspi'niz internete bağlanır) raspi bile güvenlik duvarı / proxy / özel IP / dinamik IP'nin arkasındaysa, her zaman uzaktan kumandayı yapabilirsiniz ..

Bu konsept ile uzaktan kumandayı istediğiniz yerde, istediğiniz zaman yapabilirsiniz ..


Wat. Bu güvensizdir, bazı rastgele mesajlaşma uygulamalarına güveniyorsunuz, OP'nin çalışmasını sağlamak için söz konusu rastgele mesajlaşma uygulamasını değiştirmesi gerektiğini söylüyorsunuz. Bu, rastgele mesajlaşma uygulamasının tamamen vim gibi bir şeyle kırılacağını ve korkunç bir gecikmeye sahip olacağını fark etmiyor.
Yine Başka Bir Kullanıcı

Peki, sadece komut göndermek için kullanırsanız ben onun ok düşünüyorum .. vim gibi bir şey için kullanırsanız, ben iyi olduğunu düşünmüyorum .. iyi tavsiye .. ben cevabımı düzenleyeceğim
Wicaksono Trihatmaja

İstediğim bu değil, tam kabuk erişimi istiyorum, bundan daha az bir şey değil - Pi'yi dozlamak kadar .. Gerçekten endişe etmiyorum, her şeyden önce özel bir kurulum yapmak zorundayım hatta kendim bağlanmak, ikinci çünkü bağlantıları aralıklı olacak ve rastgele değişecek
user2813274

0

Bence ters ssh port yönlendirme bakmak gerekir. Özetle, aşağıdaki sözdizimini kullanarak önce A'dan C'ye bir ssh başlatırsınız ve sonra bu bağlantı noktasını C'den A'ya geri tünellemek için kullanırsınız. Bunu yaptığınızda A'nın ev güvenlik duvarına çarpmazsınız, çünkü R-Pi zaten tünel.

ssh -R 2210: localhost: 22 myCoolAwsSite.com

Lütfen bunu yaparken güvenlik sonuçlarını göz önünde bulundurun. Bağlantı yeniden başlatıldıktan sonra yeniden kurulacak şekilde bazı cron jujitsu ekleyebilirsiniz.


Hata ... Bu Anthon'un cevabından nasıl farklı?
user2813274
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.