İçeriğe geçmek için "Enter"a basın

Az Masraflı Çok Kuvvetli Cloud VM

Son güncelleme tarihi 5 Eylül 2022

Kim istemez ki 🙂

Az masraflı Cloud VM, şaka değil mümkün ama biraz dolambaçlı. Dolar kurunun alıp başını gittiği bu günlerde test için Cloud hizmeti sunan bir firmadan giriş seviye bir VM başlatsanız bile aylık hesaba vurduğunuz zaman masraflar, aldığınız hizmet ile kıyasladığınızda canınızı sıkabilecek düzeyde olabiliyor…

Peki çözümü var mı?

Evet, şahsen kullandığım bir yöntem var ve bu yazımda onu açıklayacağım. Linux sistem yöneticisi arkadaşlardan daha önce kullanmayan varsa da faydalanacaklarını ümid ediyorum. SSH kullanarak yerelde statik ip adresine ihtiyaç olmadan yani, CGNAT kullanan ev internetimizle bile Web Hosting sınıfındaki neredeyse tüm hizmetleri yerel bilgisayarımızdaki sanallaştırma altyapısıyla sağlayabiliriz.

İhtiyaç listesine bir göz atalım.

  • Cloud Sanal Makine, Cloud hizmeti veren herhangi bir firmadan alınan VM (giriş seviye olabilir) mesela ben genellikle DigitalOcean üzerinden bu hizmeti alıyorum, kaydolmak isteyen varsa bu link üzerinden kaydolarak 60 günlük kullanıma sahip $100 değerinde ücretsiz kullanım hakkı elde edebilirsiniz.
  • Sanallaştırma Sistemi bilgisi yerel sistemimizdeki VM ile asıl işlemleri yapacağımız için gerekli.
  • Temel Server kurulumu bilgisi, network protokollerini yüzeysel olarak biliyor olsanız bile yeterli, ayrıca ssh, web, ftp, dns, veritabanı, mail, nfs, v.b. sunucuları yapılandırabiliyor olmalısınız. Yerel VM üzerine kuracağız doğal olarak.
  • Web Proxy bilgisi
  • Upload Bant Genişliği 10Mbit altında olmayan ev interneti, ne kadar fazla o kadar iyi.
  • SSH kullanım bilgisi, ve port redirection, ssh key pair, ssh config, bu yazımın merkezinde tam olarak bu başlık var.
  • systemd bilgisi kurulumumuzun otonom şekilde çalışması için sistem servislerini oluşturmak gerekiyor.

Dezavantajları / Avantajları

  • Kişisel bilgisayarınız kapalıysa sunulacak birşey yok demektir.
  • Yerel internetiniz kesildiyse sunulacak birşey yok demektir.
  • Diğer taraftan 1/10 masrafla sunucu ayağa kaldırabilirsiniz.
  • Konsol, Backup, Snapshot elinizin altında olur, yönetim kolaylaşır.
  • Veri Gizliliğiniz elinizin altında olur. (Cloud VM sadece relay vazifesi göreceğinden)
  • Testlerinizi çoook daha ucuza, hızlı şekilde gerçekleştirmiş olursunuz.

1vCPU, 2GB ram, 25GB disk için aylık ödediğimiz para $6 (~90TL) peki GitLab-CE kurup kullanmak istersek, sistemin adam akıllı çalışması için minimum 4vCPU, 8GB ram, 100GB disk alanına ihtiyacımız var bu özelliklere sahip VM’i hizmet sağlayıcıdan almak istersek aylık $48 (~720TL) gibi bir masraf karşımıza çıkıyor. Eğer kişisel bilgisayarımızda bu kaynak varsa $6 VM ile GitLab DevOps sunucusunu kurup kullanabiliriz.

İşlem adımları;

  1. Cloud VM oluşturalım.
  2. DNS ayarlarımızı yapalım, domain/subdomain yeni oluşturduğumuz VM’i göstersin.
  3. Yerel bilgisayarımızda yüksek kapasiteli bir VM oluşturalım.
  4. Cloud VM içerisine ihtiyaç duyduğumuz uygulamaları kuralım, yapılandıralım.
  5. SSH port redirection ile Yerel VM üzerindeki bir uygulamaya, Cloud VM üzerinden nasıl erişilebileceğine bakalım.
  6. SSH port redirection işlemini systemd unit file kullanarak otomatize edelim, sistem servisi haline getirelim.

Bu adımları attığımızda yerel bilgisayarımızda kurduğumuz VM üzerindeki sunucu uygulamaları aynen Digital Ocean tarafındaki VM üzerinden erişilebilecektir.

1. Cloud VM Oluşturalım

En basit adımlarımızdan birisi, yapılandırmayı seç, hostname yaz, oluştur butonuna bas bitti.

2. DNS ayarlarımızı yapalım

Bu kısım sizin tarafınızda, bir alan adına sahip olmalısınız, Cloud hizmeti veren firmalar genellikle ücretsiz DNS hizmeti de vermekte, yönergeleri izleyin. Benim gibi kendi DNS sunucunuz varsa eğer A kaydı ekleme işlemini biliyorsunuz demektir, elinizdeki domainlerden birtanesine A kaydı ekleyin ve yeni oluşturduğumuz Cloud VM ip adresini göstersin. AAAA kaydı da ekleyebilirsiniz ipv6 adresini gösterebilir (opsiyonel) yerel internetim ipv6 desteklemediğinden bu kısmı uygulamaya dökemeyeceğim.

ysn.app alan adı üzerinde vcs.ysn.app alt alanadını yeni Cloud VM’i gösterecek şekilde yapılandırdım.

Cloudflare DNS’i sunucumun A kaydını 2dk içerisinde gördü, yani işlem yapmaya başlayabiliriz.

3. Yerel bilgisayarımızda yüksek kapasiteli bir VM oluşturalım.

Bu kısmı size bırakıyorum, Yerel VM için hangi sanallaştırma altyapısını kullanırsanız kullanın sonuç değişmeyecektir, makineyi ister veritabanı sunucusu olarak kurun, ister web hosting makinesi olarak kurun, ister benim yaptığım gibi GitLab-CE kurun size kalmış, yüksek kapasite ihtiyacı olan herhangi bir uygulama olması burada toplanmamızın asıl amacı 🙂 VM oluşturmayıp kişisel bilgisayarınızdaki portları da Cloud VM tarafına paslayabilirsiniz, sizin tercihiniz.

4. Cloud VM içerisine ihtiyaç duyduğumuz uygulamaları kuralım, yapılandıralım.

Temelde ssh uygulamamız tüm ihtiyacımızı karşılıyor, hali hazırda varsayılan kurulum ssh publickey kısıtlamasına sahip, sadece ssh port 22 yerine Cloud VM 2222, Yerel VM 22 olacak şekilde bir değişiklik yapacağım. İlaveten ufw firewall kurup temel uygulamalarımıza izin verdiğimizde genel manada işimiz tamamdır.

yasin@uxn-workstation:~$ ssh vcs.ysn.app

# root olarak
sed -i 's/#Port 22/Port 2222/g' /etc/ssh/sshd_config
exit
logout
Connection to vcs.ysn.app closed.

yasin@uxn-workstation:~$ ssh vcs.ysn.app "systemctl restart sshd"
yasin@uxn-workstation:~$ ssh vcs.ysn.app
ssh: connect to host vcs.ysn.app port 22: Network is unreachable

Yukarıda farketmişsinizdir ssh vcs.ysn.app diyerek ne kullanıcı adı ne parola ne başka bir bilgi vermeden doğrudan sunucuma erişiyorum, bunu sağlayan yapı SSH keypair ve SSH config dosyası, varsayılan ~/.ssh/config dosyasıdır, ancak isteğe bağlı farklı bir dosya içerisinden de özellikler okutulabilir.

# keep alive all hosts connections
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

Host ysnapp
		HostName vcs.ysn.app
        User    root
        Port    2222
        IdentityFile ~/.ssh/parolasiz_yeni

Yukarıdaki örnek SSH yapılandırması ~/.ssh/config içerisinde yer alıyor, farklı bir yere ssh-con.config olarak kaydedip kullanmak istersem komut şu şekilde işleyecek.

ssh -F ~/ssh-con.config ysnapp

SSH uygulaması ve detaylı açıklamaları başka bir yazının konusu o sebepten burada bırakıyorum.

UFW firewall yapılandırmasını olabildiğince basit tutacağım,

apt install ufw

ufw default deny incoming
ufw default allow outgoing
ufw default allow routed

ufw allow ssh
ufw allow http
ufw allow https
ufw allow 2222/tcp comment 'SSH Port'

ufw enable

Buraya kadar Yerel ve Cloud tarafındaki ayarlamaları bitirmiş olduk, an itibariyle;

  • Cloud VM bir domain ile erişilebiliyor olmalı.
  • Yerel VM ile Cloud VM arasında ssh keypair kullanarak ssh bağlantısı kurulabiliyor olmalı.
  • Yerel VM üzerinde yayınlamak istediğimiz uygulamalar çalışıyor olmalı.
  • Sıraladığım bu 3 madde için internette zibilyontane how-to var hali hazırda, ben karşılaştığım probleme getirdiğim çözümü paylaşıyorum, yeri gelirse bu maddeler için de örnek hazırlarım. Mesela şurada ssh keypair oluşturma ile ilgili bir yazı yazmışım zamanında. Özü aynı, PC üzerinde ssh-copy-id kullansak keyleri aktarmak daha basit olur.

5. SSH port redirection

Hızlı bir giriş yaparak yerel bilgisayarımdaki mysql veri tabanı ve http web sunucusunu yönlendirelim…

MySql 3306/tcp

HTTP 80/tcp

ssh -NT -R 80:0.0.0.0:80 vcs.ysn.app

ssh -NT -R 3306:0.0.0.0:3306 vcs.ysn.app

Yukarıdaki 2 komutu 2 ayrı terminalde açalım ve ne olduğuna bakalım.

yasin@uxn-workstation:~$ ssh vcs.ysn.app

netstat -tlpn4
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      3727/sshd: root     
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      2459/sshd: /usr/sbi 
tcp        0      0 127.0.0.1:80            0.0.0.0:*               LISTEN      3720/sshd: root

Sunucularımızın local 127.0.0.1 olarak değilde, tüm networke 0.0.0.0 yayın yapmasını istiyorsak Cloud VM üzerinde;

sed -i 's/#GatewayPorts no/GatewayPorts yes/g' /etc/ssh/sshd_config

systemctl restart sshd

restart dedikten sonra yukarıdaki bağlantıları yeniden başlatmayı unutmayın 🙂

netstat -tlpn4
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      3790/sshd: root     
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      3780/sshd: /usr/sbi 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3783/sshd: root

artık istediğim gibi çalışıyor.

http://vcs.ysn.app adresine gittiğimde karşıma yerel bilgisayarımın web server varsayılan dizini çıkıyor. HTTP redirection başarılı.

MYSQL redirection ne alemde ona bakalım. Normalde dışarıdan 3306 portuna erişim kapalı, geçici olarak ufw allow 3306 dedim ve test için erişime izin verdim.

Bu şekilde redirect yapabileceğimiz bir başka uygulama ise SSH, yukarıda vcs.ysn.app makinesinin ssh portunu 2222 çevirme sebebim tam olarak bundan.

ssh -NT -R 22:0.0.0.0:22 vcs.ysn.app

Şu anda vcs.ysn.app makinesine Web Sunucu, Mysql Sunucu, SSH sunucu bağlantısı yapılmaya kalkıldığında doğrudan yereldeki sistemime yönlendirme işlemi gerçekleşiyor. Bunun gibi neleri aktarabiliriz sorusuna ise “TCP protokolü ile iletişim kuran neredeyse tüm uygulamaları” şeklinde cevaplarsam yalnış olmaz sanırım.. Aşağıdaki tabloda portlar ve o portlar üzerinde kullanılan uygulamaları bulabilirsiniz, ayıklamaya uğraşmadım TCP olanları bu yöntem ile redirect yapabiliriz.

PORTPROTOCOLAPPLICATIONSTATUS
0TCP, UDPReserved; do not use (but is a permissible source port value if the sending process does not expect messages in response)Offical
1TCP, UDPTCPMUXOffical
5TCP, UDPRJE (Remote Job Entry)Offical
7TCP, UDPECHO protocolOffical
9TCP, UDPDISCARD protocolOffical
11TCP, UDPSYSTAT protocolOffical
13TCP, UDPDAYTIME protocolOffical
17TCP, UDPQOTD (Quote of the Day) protocolOffical
18TCP, UDPMessage Send ProtocolOffical
19TCP, UDPCHARGEN (Character Generator) protocolOffical
20TCPFTP Protocol (data) - port for transferring FTP dataOffical
21TCPFTP Protocol (control) - port for FTP commands and flow controlOffical
22TCP, UDPSSH (Secure Shell) - used for secure logins, file transfers (scp, sftp) and port forwardingOffical
23TCP, UDPTelnet protocol - unencrypted text communication, remote login serviceOffical
25TCP, UDPSMTP (Simple Mail Transport Protocol) - used for email routing between email serversOffical
26TCP, UDPRSFTP - A simple FTP-like protocolUnoffical
35TCP, UDPQMS Magicolor 2 printerUnoffical
37TCP, UDPTIME protocolOffical
38TCP, UDPRoute Access ProtocolOffical
39TCP, UDPResource Location ProtocolOffical
41TCP, UDPGraphicsOffical
42TCP, UDPHost Name Server/WINS ReplicationsOffical
43TCPWHOIS protocolOffical
49TCP, UDPTACACS Login Host protocolOffical
53TCP, UDPDNS (Domain Name System)Offical
57TCPMTP, Mail Transfer ProtocolOffical
67UDPBOOTP (BootStrap Protocol) server; also used by DHCP (Dynamic Host Configuration Protocol)Offical
68UDPBOOTP (BootStrap Protocol) client; also used by DHCP (Dynamic Host Configuration Protocol)Offical
69UDPTFTP (Trivial File Transfer Protocol)Offical
70TCPGopher protocolOffical
79TCPFinger protocolOffical
80TCPHTTP (HyperText Transfer Protocol) - used for transferring web pagesOffical
81TCPTorpark - Onion routing ORportUnoffical
82UDPTorpark - Control PortUnoffical
88TCPKerberos - authenticating agentOffical
101TCPHOSTNAME
102TCPISO-TSAP protocol/Microsoft Exchange
107TCPRemote Telnet Service
109TCPPOP, Post Office Protocol, version 2
110TCPPOP3 (Post Office Protocol version 3) - used for retrieving emailsOffical
111TCP, UDPSUNRPC protocol
113TCPIdent - old server identification system, still used by IRC servers to identify its usersOffical
115TCPSFTP, Simple File Transfer Protocol
117TCPUUCP-PATH
118TCP, UDPSQL ServicesOffical
119TCPNNTP (Network News Transfer Protocol) - used for retrieving newsgroups messagesOffical
123UDPNTP (Network Time Protocol) - used for time synchronizationOffical
135TCP, UDPEPMAP / Microsoft RPC Locator ServiceOffical
137TCP, UDPNetBIOS NetBIOS Name ServiceOffical
138TCP, UDPNetBIOS NetBIOS Datagram ServiceOffical
139TCP, UDPNetBIOS NetBIOS Session ServiceOffical
143TCP, UDPIMAP4 (Internet Message Access Protocol 4) - used for retrieving emailsOffical
152TCP, UDPBFTP, Background File Transfer Program
153TCP, UDPSGMP, Simple Gateway Monitoring Protocol
156TCP, UDPSQL ServiceOffical
157TCP, UDPKNET VM Command Message Protocol
158TCP, UDPDMSP, Distributed Mail Service Protocol
159TCP, UDPNSS-Routing
160TCP, UDPSGMP-TRAPS
161TCP, UDPSNMP (Simple Network Management Protocol)Offical
162TCP, UDPSNMPTRAPOffical
170TCPPrint-srv
179TCPBGP (Border Gateway Protocol) - an exterior gateway routing protocol that enables groups of routers to share routing information to ensure efficient and loop-free routes can be established. BGP is commonly used within and between ISPs.Offical
190TCP, UDPGateway Access Control Protocol (GACP)
191TCP, UDPProspero Directory Service
192TCP, UDPOSU Network Monitoring System, Apple AirPort Base Station PPP status or discovery, AirPort Admin Utility or Express Assistant
192TCP. UDPSRMP (Spider Remote Monitoring Protocol)
194TCPIRC (Internet Relay Chat)Offical
201TCP, UDPAppleTalk Routing Maintenance
209TCP, UDPThe Quick Mail Transfer Protocol
213TCP, UDPIPXOffical
218TCP, UDPMPP, Message Posting Protocol
220TCP, UDPIMAP, Interactive Mail AccessProtocol, version 3
259TCP, UDPESRO, Efficient Short Remote Operations
264TCP, UDPBGMP, Border Gateway Multicast Protocol
311TCPApple Server-Admin-Tool, Workgroup-Manager-Tool
318TCP, UDPTSP, Time Stamp Protocol
323TCP, UDPIMMP, Internet Message Mapping Protocol
383TCP, UDPHP OpenView HTTPs Operations Agent
366TCP, UDPSMTP, Simple Mail Transfer Protocol. On-Demand Mail Relay (ODMR)
369TCP, UDPRpc2portmapOffical
371TCP, UDPClearCase albdOffical
384TCP, UDPA Remote Network Server System
387TCP, UDPAURP, AppleTalk Update-Based Routing Protocol
389TCP, UDPLDAP (Lightweight Directory Access Protocol)Offical
401TCP, UDPUPS Uninterruptible Power Supply Offical
411TCPDirect Connect Hub portUnoffical
427TCP, UDPSLP (Service Location Protocol)Offical
443TCPHTTPS - HTTP Protocol over TLS/SSL (used for transferring web pages securely using encryption)Offical
444TCP, UDPSNPP, Simple Network Paging Protocol
445TCPMicrosoft-DS (Active Directory, Windows shares, Sasser worm, Agobot, Zobotworm)Offical
445UDPMicrosoft-DS SMB file sharingOffical
464TCP, UDPKerberos Change/Set passwordOffical
465TCPSMTP over SSL - CONFLICT with registered Cisco protocolConflict
500TCP, UDPISAKMP, IKE-Internet Key ExchangeOffical
512TCP, Remote Process Execution
512UDPat, together with biff: notifies users of new c.q. yet unread e-mail
513TCPLogin
513UDPWho
514TCPrsh protocol - used to execute non-interactive commandline commands on a remote system and see the screen return
514UDPsyslog protocol - used for system loggingOffical
515TCPLine Printer Daemon protocol - used in LPD printer servers
517TCPTalk
518UDPNTalk
520TCPefs
520UDPRouting - RIPOffical
513UDPRouter
524TCP, UDPNCP (NetWare Core Protocol) is used for a variety things such as access to primary NetWare server resources, Time Synchronization, etc.Offical
525UDPTimed, Timeserver
530TCP, UDPRPCOffical
531TCP, UDPAOL Instant Messenger, IRC
532TCPnetnews
533UDPnetwall, For Emergency Broadcasts
540TCPUUCP (Unix-to-Unix Copy Protocol)
542TCP, UDPcommerce (Commerce Applications)
543TCPklogin, Kerberos login
544TCPkshell, Kerberos Remote Shell
546TCP, UDPDHCPv6 client
547TCP, UDPDHCPv6 server
548TCPAFP (Apple Filing Protocol)
550UDPnew-rwho, new-who
554TCP, UDPRTSP (Real Time Streaming Protocol)Offical
556TCPRemotefs, rfs, rfs_server
560UDPrmonitor, Remote Monitor
561UDPmonitor
561TCP, UDPchcmd
563TCP, UDPNNTP protocol over TLS/SSL (NNTPS)Offical
587TCPEmail message submission (SMTP) (RFC 2476)Offical
591TCPFileMaker 6.0 Web Sharing (HTTP Alternate, see port 80)Offical
593TCP, UDPHTTP RPC Ep Map/Microsoft DCOMOffical
604TCPTUNNEL
631TCP, UDPIPP, Internet Printing Protocol
636TCP, UDPLDAP over SSL (encrypted transmission)Offical
639TCP, UDPMSDP, Multicast Source Discovery Protocol
646TCPLDP, Label Distribution Protocol
647TCPDHCP Failover Protocol
648TCPRRP, Registry Registrar Protocol
652TCPDTCP, Dynamic Tunnel Configuration Protocol
654TCPAODV, Ad hoc On-Demand Distance Vector
665TCPsun-dr, Remote Dynamic ReconfigurationUnoffical
666UDPDoom, First online FPS
674TCPACAP, Application Configuration Access Protocol
691TCPMicrosoft Exchange RoutingOffical
692TCPHyperwave-ISP
695TCPIEEE-MMS-SSL
698TCPOLSR, Optimized Link State Routing
699TCPAccess Network
700TCPEPP, Extensible Provisioning Protocol
701TCPLMP, Link Management Protocol.
702TCPIRIS over BEEP
706TCPSILC, Secure Internet Live Conferencing
711TCPTDP, Tag Distribution Protocol
712TCPTBRPF, Topology Broadcast based on Reverse-Path Forwarding
720TCPSMQP, Simple Message Queue Protocol
749TCP, UDPkerberos-adm, Kerberos administration
750UDPKerberos version IV
782TCPConserver serial-console management server
829TCPCMP (Certificate Management Protocol)
860TCPiSCSI
873TCPrsync - File synchronisation protocol Offical
901TCPSamba Web Administration Tool (SWAT) Unoffical
902TCP, UDPVMware Server Unoffical
911TCPNetwork Console on Acid (NCA) - local tty redirection over OpenSSH
981TCPSofaWare Technologies Remote HTTPS management for firewall devices running embedded Checkpoint Firewall-1 softwareUnoffical
989TCP, UDPFTP Protocol (data) over TLS/SSLOffical
990TCP, UDPFTP Protocol (control) over TLS/SSLOffical
991TCP, UDPNAS (Netnews Admin System)
992TCP, UDPTelnet protocol over TLS/SSLOffical
993TCPIMAP4 over SSL (encrypted transmission)Offical
995TCPPOP3 over SSL (encrypted transmission)Offical

6. systemd ile Sistem Servisi Oluşturalım

Bu servisi yerel VM üzerinde veya sunucu uygulamayı barındıran makine üzerinde oluşturup çalıştıracağız.

Sistem yöneticisi arkadaşlar hali hazırda unit file oluşturmayı genellikle biliyor veya öğrenmesi zor olmayacaktır. Burada oluşturmak istediğim servis tek config dosyasıyla birçok işi yapabilmeli…

Unit file içerisinde Specifiers ismi verilen bir yapı var, hani systemctl restart servis-ismi@ @ işareti çıkıyor ya, tam olarak o @ simgesinden bahsedeceğiz. service dosyaları argüman alabiliyor ve bunu belirli standartlarda yapıyorlar. Specifiers, tümüne girmeyeceğim bize sadece %i lazım.

İhtiyacımız olan temel service dosyası;

/etc/systemd/system/ssh-tunnel@.service

[Unit]
Description=Start ssh-tunnel %i
After=network.target

[Service]
ExecStart=/usr/bin/ssh -F /etc/default/ssh-tunnel.config -NT %i
RestartSec=5  
Restart=always

[Install]
WantedBy=multi-user.target

4. başlıkta ssh config dosyasından bahsetmiştim, /etc/default/ssh-tunnel.config dosyamız tam olarak sistem servisimizin kullanacağı yapılandırmalara, parametrelere sahip olacak detay için man ssh.

Host *
	ServerAliveInterval 60
	ServerAliveCountMax 3

Host ysnapp_ssh   
	HostName vcs.ysn.app
	User    root
	Port    2222
	IdentityFile /home/yasin/.ssh/parolasiz_yeni
	GatewayPorts yes
	RemoteForward 0.0.0.0:22 0.0.0.0:22
	ExitOnForwardFailure yes

Yukarıda sadece ssh servisini yerel tcp 22 portunu uzak tcp 22 portuna bağladı, vcs.ysn.app alanı port 22 üzerine yapılan talebin tümü yerel bilgisayarıma gelecektir.

Servisi aktive etmeden önce test edelim,

/usr/bin/ssh -F /etc/default/ssh-tunnel.config -NT ysnapp_ssh

ssh key fingerprint soracaktır, ekleyelim. Komut root yetkileriyle çalıştırılıyor, systemd –user ile kullanıcı için de yapılandırma yapılabilir ancak bir kullanıcının port 1000 ve üzerine redirect işlemi yapabildiği unutulmamalı.

# root olarak;
systemctl enable ssh-tunnel@ysnapp_ssh.service
Created symlink /etc/systemd/system/multi-user.target.wants/ssh-tunnel@ysnapp_ssh.service → /etc/systemd/system/ssh-tunnel@.service.

systemctl start ssh-tunnel@ysnapp_ssh.service

systemctl status ssh-tunnel@ysnapp_ssh.service
● ssh-tunnel@ysnapp_ssh.service - Start ssh-tunnel ysnapp_ssh
     Loaded: loaded (/etc/systemd/system/ssh-tunnel@.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-04-08 18:19:30 +03; 2s ago
   Main PID: 183786 (ssh)
      Tasks: 1 (limit: 19005)
     Memory: 896.0K
        CPU: 19ms
     CGroup: /system.slice/system-ssh\x2dtunnel.slice/ssh-tunnel@ysnapp_ssh.service
             └─183786 /usr/bin/ssh -F /etc/default/ssh-tunnel.config -NT ysnapp_ssh

Nis 08 18:19:30 uxn-workstation systemd[1]: Started Start ssh-tunnel ysnapp_ssh.

Cloud VM tarafında

Sistemimizin açılışında ssh redirect işlemi otomatik olarak gerçekleşecektir. HTTP için de config dosyamıza ilave yapıp servisi aktive edelim, birkaç tane de kendim ilave ettim bu şekilde yukarıdaki paylaştığım tablodan dilediğiniz uygulama için port redirect yapabilirsiniz.

Host *
	ServerAliveInterval 60
	ServerAliveCountMax 3

Host ysnapp_ssh   
	HostName vcs.ysn.app
	User    root
	Port    2222
	IdentityFile /home/yasin/.ssh/parolasiz_yeni
	GatewayPorts yes
	RemoteForward 0.0.0.0:22 0.0.0.0:22
	ExitOnForwardFailure yes

Host ysnapp_http   
	HostName vcs.ysn.app
	User    root
	Port    2222
	IdentityFile /home/yasin/.ssh/parolasiz_yeni
	RemoteForward 0.0.0.0:80 0.0.0.0:80
	ExitOnForwardFailure yes

Host ysnapp_https   
	HostName vcs.ysn.app
	User    root
	Port    2222
	IdentityFile /home/yasin/.ssh/parolasiz_yeni
	RemoteForward 0.0.0.0:443 0.0.0.0:443
	ExitOnForwardFailure yes

Host ysnapp_ftp   
	HostName vcs.ysn.app
	User    root
	Port    2222
	IdentityFile /home/yasin/.ssh/parolasiz_yeni
	RemoteForward 0.0.0.0:21 0.0.0.0:21
	ExitOnForwardFailure yes

Host ysnapp_mysql   
	HostName vcs.ysn.app
	User    root
	Port    2222
	IdentityFile /home/yasin/.ssh/parolasiz_yeni
	RemoteForward 0.0.0.0:3306 0.0.0.0:3306
	ExitOnForwardFailure yes

Host ysnapp_pgsql   
	HostName vcs.ysn.app
	User    root
	Port    2222
	IdentityFile /home/yasin/.ssh/parolasiz_yeni
	RemoteForward 0.0.0.0:5432 0.0.0.0:5432
	ExitOnForwardFailure yes
systemctl enable ssh-tunnel@ysnapp_http
systemctl enable ssh-tunnel@ysnapp_mysql
systemctl enable ssh-tunnel@ysnapp_pgsql

systemctl start ssh-tunnel@ysnapp_http.service
systemctl start ssh-tunnel@ysnapp_mysql.service
systemctl start ssh-tunnel@ysnapp_pgsql.service

Sistem servisi olarak ssh bağlantısı işlemini görmüş olduk. Kolay gelsin.

Allah’a emanet olun.

Yorumlar kapatıldı.