Yanıtlar:
Önceden planlıyorsanız, OpenSSH'nin yeterince yeni sürümleriyle çok basittir.
İlk defa bir ana bağlantı açın. Daha sonraki bağlantılar için, bağımlı bağlantıları mevcut ana bağlantı üzerinden yönlendirin. Gözlerinde farklı ~/.ssh/config, otomatik olarak gerçekleşmesi bağlantı paylaşımını kurmak:
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
Mevcut bir bağlantıyla aynı (kullanıcı, port, makine) ssh oturumu başlatırsanız, ikinci oturum ilkine tünellenir. İkinci bağlantının kurulması yeni bir kimlik doğrulama gerektirmez ve çok hızlıdır.
/var/log/secureve /var/log/auth.loglog SSH bağlantıları; orada bir köle bağlantısı görünmüyor, çünkü mevcut bir bağlantıda atlanıyor. Eğer ssh oturumunuzda bir terminal tahsis ederse (yani ssh somehost, komut verilmemişse, veya ssh -t), bu (normalde) giriş yapmış wtmpolursanız, o terminalin nasıl göründüğüne bakılmaksızın (sshd, bağlantı kurmak için hangi yöntemi kullandıysa, terminal emülatör uygulaması,…).
ControlPersist 600, otomatik olarak silinmeden önce soketin boşta kaldığı saniye cinsinden bir gecikme olan da kullanabilirsiniz . Aksi takdirde, ana bağlantı sona erdiğinde otomatik olarak kapanacaktır. Uzaktan bir dizi komut çalıştırmak için iyi değildir (örn. Farklı klasörlere bir dizi rsync komutu)
-S(soket belirtin) ve -M(ana bağlantı oluşturun) kullanabilirsiniz.
Nc aracı ve ssh tünellerini kullanarak elde etmek oldukça kolaydır .
Ssh oturumunuza ~Cyeni bir satır yazın. Bunun gibi görünen ssh "servis konsolu" komutunu alacaksınız:
ssh>
Bir ssh tüneli açmak için yerel iletme komutunu yazın:
ssh> -L22000:targethost:22001
Forwarding port.
targethostBağlandığınız makinenin ana bilgisayar adı veya IP adresi nerede .
Şimdi, hedef makinedeki ssh sunucusunun tünelleri yasaklayacak şekilde yapılandırılmadığını varsayarsak, istediğiniz bağlantı yönlendirmesine sahip olursunuz: sshmakinenizdeki istemci 22000 numaralı bağlantı noktasını dinler ve kendisine gönderilen tüm trafiği 22001 bağlantı noktasına yönlendirir targethost.
Bu, zaten açık olan ssh oturumunuza aşağıdaki komutu girmek kadar basittir:
remote$ nc -l localhost 22001 | sh
Bu, ssh tünelimizin hedef portu olan 22001 portunu dinleyen bir TCP sunucusunu başlatacak ve alınan verileri (muhtemelen kabuk komutları) bir targethostkabuk örneğine yönlendirecektir.
local$ cat yourscript.sh | nc localhost 22000
Bu, betiğin gövdesini ssh tünelinize gönderecek ve üzerindeki bir kabukta idam edilecek targethost. Komut dizisinin çıktısını terminalinizde ssh oturumu ile göreceksiniz.
Ayrıca, bu senaryoda ssh tünelinin (1. adım) kesinlikle gerekmediğine dikkat edeceğim; Sunucuyu açmaya başlayabilir ve doğrudan internet üzerinden bağlanabilirsiniz. Ancak, hedef ana bilgisayara doğrudan erişilemiyorsa (örneğin bir NAT'ın arkasındaysa) veya ssh şifrelemesi isteniyorsa tüneli kullanmanız gerekir.
~karakter yeni bir satırdan sonra gelmelidir, bu LF ~ Cnedenle muhtemelen daha iyi bir sıradır.
less, genel varsayılan çağrı cihazının, anahtar kelimelerinizi biliyorsanız, bazı kaydırma işlemlerini kurtarabilen aramayı desteklediğini bilmek iyidir : sadece yazın man ssh /ESCAPEve oradasınız.