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/secure
ve /var/log/auth.log
log 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ış wtmp
olursanı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.
targethost
Bağ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: ssh
makinenizdeki 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 targethost
kabuk ö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 ~ C
nedenle 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
/ESCAPE
ve oradasınız.