Birden çok ana bilgisayar aracılığıyla ssh


37

Ofisimdeki makineme ulaşmak için şu anda şunu yapıyorum:

me@home:~$ ssh unix.university.com
me@unix:~$ ssh unix.department.univeristy.com
me@unix.department:~$ ssh office-machine.department.university.com
me@office-machine:~$ echo "This is very annoying"

Bu işlemi otomatikleştirmenin kolay bir yolu var mı, belki de sonunda kullanabileceğim tek bir komut var mı?


Yanıtlar:


31

Oturum açtıktan sonra ssh istemcisini uzaktaki makinede ssh yürütmek için kullanabilirsiniz.

ssh -t unix.university.com \
    ssh -t unix.department.univeristy.com \
    ssh -t office-machine.department.university.com

( -tÇağrılarıma dahil etmemin sebebi, ssh'nin bana hataları veriyor olmasıydı: kendi makinemde denediğimde terminal olmamak; makineniz farklı olabilir.)

Son kabuğundan çıktığınızda, işlem Ctrl-Dtekrar tekrar yazmanızı sağlayacak şekilde zincirden çıkacaktır .


Lütfen dikkat: sadece uzak makineye giriş yaparsanız "-t" ekleyin. Uzaktaki makineye bir komut başlatmak için, bazı şeyleri bozabilecekleri / bozabilecekleri için KOYMAYINIZ (örnek:: tar cf - something | ssh somewhere "cd /path/remote ; tar xf - " eğer eklerseniz bozulabilir -t!) )
Olivier Dulac

3
-J'yi kullanmak bu cevaptan daha güvenlidir, çünkü daha sonra tüm ssh anahtarlarını yerel bilgisayarınızda saklama olanağına sahipsiniz. @Miikka gelen cevapta belirtildiği şekilde -J seçeneği openssh 7.3 sürümündeki tanıtıldı
Erik Sjölund

1
@ ErikSjölund Openssh birden fazla -Jseçeneğe izin vermiyor . ProxyCommandYaptığın yapılandırmada birden fazla seçenek yapabileceğini düşünüyorum .
amphetamachine

1
@ amphetamachine Üzerinden geçmesi -Jgereken virgülle ayrılmış bir atlama listesi belirleyebilirsiniz. Ama kullanarak ProxyCommandile -Whala desteklemek için çok yaşlı bir sürümünü kullanıyor gerçekleşmesi halinde bu cevap çok daha iyi bir yaklaşımdır -J.
kasperd

35

Evet, bunu ssh ProxyCommand ve netcat kullanarak yapmanın harika bir yolu var

.Ssh / config içine böyle bir şey koyun

Host *.department.university.com
User me
ForwardAgent yes
ProxyCommand ssh unix.university.com nc %h %p

Bu, doğrudan unix.university.com atlama / ana bilgisayarını kullanarak herhangi bir .department.university.com sunucusunda oturum açacaktır. Doğrudan unix.university.com için bir stanza da ihtiyacınız olabilir.

İşte nasıl çalıştığını açıklayan bir link: http://backdrift.org/transparent-proxy-with-ssh

Bu teknik ile artık sadece yazabilirsiniz

ssh unix.department.university.com

ve hepsi doğrudan görünecek. Rsync, scp, etc (ssh yığınındaki herhangi bir şey) gibi araçlar da şeffaf şekilde çalışır.


2
+1 Test ağındaki verileri prodüksiyon ağına aşamalı bir sunucu üzerinden iletmek için buna benzer bir şey kullanıyorum.
Arcege

2
Evet, bu harika çalışıyor!
gabe.

15
Sadece -WProxyCommand ssh -W %h:%p gateway
ssh'in

Bilmek güzel! Thx
Aaron Brown

2
kullanıcının adı makineler arasında aynıysa, harika çalışır; eğer farklıysa, bir şey yapmak zorundasınızProxyCommand ssh -W %h:%p user@gateway
Riccardo Cossu

9

OpenSSH 7.3'de, ssh, tam olarak bu sorunu çözmek için -Jkomut satırı bayrağını ve ilgili ProxyJumpkonfigürasyon seçeneğini ekledi .

Ssh kullanmak istediğiniz ana bilgisayarlara virgülle ayrılmış bir liste olarak verin -J. Örneğin:

ssh -J unix.university.com,unix.department.university.com  \
  office-machine.department.university.com

-5

SSH tüneli. Bunun nasıl yapıldığını tam olarak hatırlamıyorum, ancak temelde bir makinenin belki de ayrı bir porta bağlanarak bir tünele izin vermesinin bir yolu olduğunu biliyorum. Bu şekilde, aynı ilk makineye (örneğin farklı bir bağlantı noktasıyla) erişirsiniz ve sizi son konumunuza yerleştirir.

Yine de nasıl yapılandıracağınıza bakmak gerekir.

:)


Bir liman açmak istemiyorsunuz (ve muhtemelen yapamazsınız) ya da üniversitenizdeki ssh ağ geçidiniz…
Stéphane Gimenez

9
Nasıl yapılacağını bilmiyorsanız ve bakmak için canınızı sıkmıyorsanız, bu cevabı neden yayınladınız?
amfetamachine

4
Gerçekten bir cevap
gabe.
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.