Bu komutu çalıştırdığınızı varsayarsak: ssh -f user@mysql-server.com -L 3306:mysql-server.com:3306 -Nbağ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, sshbağlantı kurmak için herhangi bir şifre girdikten sonra arka plana gönderin ; localhostoturum 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 sshsayfadan):
[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:3306bağlayan yerel port 3306iç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.comardı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, sshaç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 3306bulmak pidait ssh -f ... -L 3306:mysql-server.com:3306 -Nve kill <pid>. (Ya da belki kill -9 <pid>; killişe yarayıp yaramadığını unutuyorum ). Yani güzel yararı vardır değil diğer tüm öldürme sshbağ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 localhostbağlantı noktasına 33060bağlanacak olan mysql-server.combağlantı noktasına yönlendirirsiniz 3306. Açıkçası yine de localhoston port'a bağlanabilirsiniz 3306, böylece yerel mysqlsunucuyu yine de kullanabilirsiniz .