Giriş
Local Port Forwarding için ssh komutunun -L ve -N seçenekleri birlikte kullanılır.
Söz dizimi şöyle
ssh -L <local-port>:localhost:<remote-address:remote-port> <username>@<firewall-ip>
Daha kısa söz dizimi şöyle. Burada localhost yazmaya gerek yok
ssh -L local_port:remote_address:remote_port username@sshserver
-L seçeneği
ssh tunnel açmak için kullanılır. Açıklaması şöyle
The OpenSSH client has a command line option for port forwarding, used like this:
ssh -L localport:server:serverport user@host
which will connect to host as user, and at the same time redirecting localport on the client to serverport on server
-N seçeneği
Açıklaması şöyle.
-N Do not execute a remote command. This is useful for just forwarding ports.Açıklaması şöyle.
Normally, the ssh program runs a command on a remote system. For example, ssh user@server ls -l /tmp lists the content of the /tmp directory on server. When you leave the command out, as in ssh user@server, the user's shell is executed.One of the features of OpenSSH is the creation of tunnels. The -D, -L and -R options use various techniques that allow the forwarding of network ports, also known as tunneling. By default, a tunnel created with ssh exists as long as the command executed by ssh runs on the remote server.Often though, you are not interested in running a remote command; all you want is the tunnel. This is what the -N option is for.
Örnek
Şöyle yaparız
ssh -L 8888:destination:5432 user@remote_host
Açıklaması şöyle
This command binds port 8888 on your local machine and forwards any incoming traffic to the database server running on destination:5432 on the remote server. Now, you can access the database server on the remote machine by connecting to localhost:8888 from your local machine.
Örnek
A -> Firewall -> B olsun. A'dan Firewall'a erişim var.
A'dan B'ye erişmek için A'da şöyle yaparız. -N seçeneğinin kullanılma sebebi sadece tunnel görevi görmek, başka bir "remote command" çalıştırmamak.
A'dan B'ye erişmek için A'da şöyle yaparız. -N seçeneğinin kullanılma sebebi sadece tunnel görevi görmek, başka bir "remote command" çalıştırmamak.
ssh -N -L 33642:remotemachine:5900 user@firewall
A makinesinde şöyle yaparız.
$ telnet localhost 33642
Örnek
Şöyle yaparız. Burada firewall adresi 172.168.65.117. Erişmek istediğimiz sunucu da firewall'un arkasında ve ismi postgres.123456789012.us-east-1.rds.amazonaws.com.
ssh -L 5432:postgres.123456789012.us-east-1.rds.amazonaws.com:5432 ec2-user@172.168.65.117
Eğer sunucu da firewall üzerinde çalışsaydı şöyle yapardık
ssh -L 6379:localhost:6379 ec2-user@172.168.65.117
Örnek
Privileged port olan 80'i 3000 portuna yönlendirmek için şöyle yaparız. -N seçeneğinin kullanılma sebebi sadece tunnel görevi görmek, başka bir "remote command" çalıştırmamak.
sudo ssh $USERNAME@localhost -L 80:localhost:3000 -N
Hiç yorum yok:
Yorum Gönder