Bu komutu çalıştırdığınızı varsayarsak: ssh -f user@mysql-server.com -L 3306:mysql-server.com:3306 -N
bağladığınız gönderide açıklandığı gibi.
Komutun bir dökümü:
ssh
: bu oldukça açıklayıcı. Çağırır ssh
.
-f
: (Sayfadan man ssh
)
Komut yürütmeden hemen önce ssh'nin arka plana gitmesini ister. Bu, ssh parolaları veya parolaları soracaksa, ancak kullanıcı bunu arka planda istiyorsa kullanışlıdır.
Esasen, ssh
bağlantı kurmak için herhangi bir şifre girdikten sonra arka plana gönderin ; localhost
oturum açmak yerine , kabuk istemini size geri verir remote-host
.
user@mysql-server.com
: oturum açmak istediğiniz uzak sunucu.
-L 3306:mysql-server.com:3306
: Bu ilginç kısım. -L
( man ssh
sayfadan):
[bind_address:] bağlantı noktası: ana bilgisayar: ana bilgisayar bağlantı noktası Yerel (istemci) ana bilgisayar üzerinde belirtilen bağlantı noktasının, uzak taraftaki belirli ana bilgisayara ve bağlantı noktasına iletileceğini belirtir.
Yani -L 3306:mysql-server.com:3306
bağlayan yerel port 3306
için uzak port 3306
ana bilgisayarda mysql-server.com
.
Yerel bağlantı noktasına bağlandığınızda 3306
, bağlantı güvenli kanal üzerinden adresine iletilir mysql-server.com
. Uzak ana , mysql-server.com
ardından bağlanırmysql-server.com
bağlantı noktasında 3306
.
-N
: bir komutu çalıştırmayın. Bu, "sadece portları iletmek" için kullanışlıdır (man sayfasını alıntılayarak).
Bu komut sunucudaki herhangi bir şeyi etkiler mi?
Evet, 3306 numaralı bağlantı noktasında localhost ile mysql-server.com arasında bir bağlantı kurar .
Ve bu tüneli nasıl kapatırım ...
Kullandıysanız -f
, ssh
açtığınız işlemin arka planda başladığını fark edeceksiniz . O çalıştırmaktır kapatma güzel yöntemi ps aux | grep 3306
bulmak pid
ait ssh -f ... -L 3306:mysql-server.com:3306 -N
ve kill <pid>
. (Ya da belki kill -9 <pid>
; kill
işe yarayıp yaramadığını unutuyorum ). Yani güzel yararı vardır değil diğer tüm öldürme ssh
bağlantıları; Birden fazla varsa, onları yeniden kurmak hafif bir ... acı olabilir.
... çünkü artık yerel mysql'imi düzgün kullanamıyorum.
Bunun nedeni, yerel mysql
süreci etkili bir şekilde "yakalamanız" ve ona bağlanmaya çalışan trafiği uzaktaki mysql
sürece iletmiş olmanızdır . Çok daha hoş bir çözüm , bağlantı noktası ilerisinde 3306 yerel bağlantı noktasını kullanmamak olacaktır . 33060 gibi kullanılmayan bir şey kullanın. (Daha yüksek sayılar genellikle daha az kullanılır; bunun gibi bir kombinasyonu bağlantı noktasını iletmek oldukça yaygındır: "2525-> 25", "8080-> 80", "33060-> 3306" veya benzer. Hatırlamayı biraz daha kolaylaştırır).
Yani, kullandıysanız ssh -f user@mysql-server.com -L 33060:mysql-server.com:3306 -N
, Zend mysql'e bağlan işlevinizi localhost
bağlantı noktasına 33060
bağlanacak olan mysql-server.com
bağlantı noktasına yönlendirirsiniz 3306
. Açıkçası yine de localhost
on port'a bağlanabilirsiniz 3306
, böylece yerel mysql
sunucuyu yine de kullanabilirsiniz .