Telnet Komutu Ne İşe Yarar
Kısa cevap: Telnet, uzak bir makineye ağ üzerinden metin tabanlı bir oturum açmak için tasarlanmış eski bir protokoldür ve telnet komutu bu protokolün istemci tarafıdır. Bugün asıl kullanım alanı uzaktan yönetim değil, TCP portlarının açık olup olmadığını test etmektir. telnet sunucu.com 443 yazdığınızda ekranda boş bir sayfa görmeniz aslında iyi haberdir: hedef porta TCP bağlantısı kurulmuş demektir. Şifreleme yapmadığı için gerçek oturum ihtiyaçlarında yerini SSH almıştır.
telnet komut tanımı: protokol mü, araç mı?
Karışıklığın kaynağı, aynı ismin iki farklı şeyi belirtmesidir. Telnet protokolü, varsayılan olarak TCP 23 portu üzerinden çalışan, karakter akışını çift yönlü taşıyan bir uygulama katmanı standardıdır. telnet komutu ise bu protokolü konuşan istemci programdır; ancak port numarasını elle verdiğinizde protokol pazarlığını büyük ölçüde bırakıp saf bir TCP soketi gibi davranır. Bu ikinci davranış, onu bir teşhis aracına dönüştüren özelliktir.
Söz dizimi son derece basittir:
- telnet <adres> — 23. porta bağlanır (klasik kullanım).
- telnet <adres> <port> — belirtilen TCP portuna bağlanır (teşhis kullanımı).
- Ctrl + ] ardından quit — takılan oturumdan çıkmanın en güvenilir yolu.
Çıktıyı doğru okumak: üç farklı sonuç, üç farklı teşhis
Telnet'in gerçek değeri, verdiği hata mesajlarının birbirinden farklı ağ durumlarına işaret etmesidir. Aynı "bağlanamadım" sonucu, sebebi bakımından üç kategoriye ayrılır:
| Ekranda gördüğünüz | Teknik anlamı | Muhtemel neden |
|---|---|---|
| Connected to... (boş ekran) | TCP el sıkışması tamamlandı | Port açık, servis dinliyor |
| Connection refused | Hedef RST paketi döndü | Sunucuya ulaşıldı ama o portta dinleyen servis yok ya da durmuş |
| Connection timed out | Yanıt hiç gelmedi | Güvenlik duvarı paketi sessizce düşürüyor veya yönlendirme hatalı |
| Could not open connection / host bilinmiyor | DNS çözümlenemedi | Ad çözümleme sorunu, adres yanlış yazılmış |
Bu ayrım pratikte zaman kazandırır. "Refused" alıyorsanız sorun ağda değil, servistedir; hedef makinede ilgili uygulamanın çalışıp çalışmadığına bakmak gerekir. "Timed out" alıyorsanız sorun büyük olasılıkla araya giren bir güvenlik duvarı kuralıdır ve çözümü sunucu tarafında değil, ağ yapılandırmasındadır.
Protokol seviyesinde konuşmak
Bağlantı kurulduktan sonra klavyeden yazdığınız her şey karşı tarafa ham metin olarak gider. Bu, metin tabanlı protokolleri elle test etmenizi sağlar. Örneğin bir web sunucusuna 80. porttan bağlanıp GET / HTTP/1.0 yazıp iki kez Enter'a bastığınızda sunucunun yanıt başlıklarını doğrudan görürsünüz. Aynı yöntemle bir SMTP sunucusuna 25. porttan bağlanıp EHLO ile karşılama satırını okuyabilir, posta gönderiminin hangi adımda takıldığını tespit edebilirsiniz. HTTPS (443) veya IMAPS gibi TLS ile şifreli portlarda ise bu yöntem işlemez: bağlantı kurulur ama el sıkışma şifreli olduğu için okunabilir bir diyalog göremezsiniz. Orada openssl s_client daha uygundur.
Windows'ta telnet istemcisini etkinleştirme
Windows'ta telnet istemcisi uzun süredir varsayılan olarak kapalı gelir. Denetim Masası > Programlar > Windows özelliklerini aç veya kapat yolundan Telnet İstemcisi kutusunu işaretlemek yeterlidir. Yönetici yetkisiyle açılmış bir komut isteminde dism /online /enable-feature /featurename:TelnetClient komutu da aynı işi yapar. Bu bileşenin varsayılan olarak kapalı olması bilinçli bir güvenlik tercihidir; işletim sisteminin temel güvenlik ayarlarını gözden geçirirken hangi bileşenleri gerçekten kullandığınıza karar vermek mantıklı olur.
Alternatiflerle karşılaştırma
| Araç | Güçlü yanı | Sınırı |
|---|---|---|
| telnet | Her yerde bulunur, protokolle elle konuşulur | Şifreleme yok, UDP desteklemez, betiğe uygun değil |
| SSH | Şifreli oturum, anahtarla kimlik doğrulama, tünelleme | Karşı tarafta SSH servisi gerekir |
| nc (netcat) | UDP testi, zaman aşımı ayarı, betik dostu çıktı | Windows'ta kurulum gerektirir |
| Test-NetConnection (PowerShell) | Gecikme, yönlendirme ve port durumunu birlikte raporlar | Sadece Windows, protokol diyalogu kurmaz |
| curl | HTTP/HTTPS için başlık ve süre ölçümü | Web dışı protokollerde sınırlı |
Neden artık uzaktan yönetim için kullanılmıyor
Telnet trafiği tamamen açık metindir. Aynı ağ segmentinde paket dinleyen biri kullanıcı adınızı ve şifren