8 Aralık 2022 Perşembe

ssh Local Port Forwarding - Kendi Bilgisayarımdan Bir Başka Sunucuya Erişmek İçindir

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.
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