Mosh (Mobile SHELL) Nedir? Nasıl Kurulur?

Kabuk (SHELL) ve ardından SSH (Secure Socket Shell) yazılarının devamında SSH’e alternatif olarak bazı avantajlara (ve elbette dezavantajlar da mevcut) sahip olan Mosh (Mobile SHELL)‘i biraz daha detaylandırmak istiyorum.

AA

Mosh (Mobile SHELL)

Mosh (Mobile SHELL), SSH ağ bağlantı protokolüne alternatif olarak geliştirilen, temelde SSH‘ın sahip olduğu sorunlara çözümler sunan, daha esnek ve hızlı bir alternatif olarak belirtilebilir. Doğrudan SSH alternatifi olarak ifade etmek yanlış olacaktır. Her iki kabuğun sunduğu avantaj ve dezavantajlara göre kullanım tercihinde bulunmak bu anlamda daha uygun. Özellikle mobil olarak bir ya da daha fazla server üzerinde işlem yapmanızın gerektiği durumlarda bağlantı sorunlarından etkilenmemek adına Mosh daha uygun ve sürdürülebilir bir yapı sunmakta.

Mosh Kurulumu

Mosh, kullanım sayfasında detaylı bir şekilde parklı platformlarda nasıl kurulum yapılacağına değinmiş durumda1. Ben özellikle Ubuntu (16.04) ve macOS Sierra (10.12.6) için olan iki kurulumdan ve yapılması gereken ayarlardan bahsedeceğim.

Server Erişimi

Yazıları DigitalOcean yazılarıyla ilişkilendireceğim için doğrudan örneği kurulu bir droplet’e bağlantı yapmak üzere vereceğim. Öncelikle SSH bağlantısına ihtiyacımız var ki serverda Mosh kurulumu yapabilelim2.

ssh root@domain-veya-ip-adresi
İlk İşlemler: Şifre İle Bağlantı

Yukarıdaki bağlantıyı ilk kez yaptığınızı ve herhangi bir key sahibi olmadığınızı varsayıyorum. Kodu çalıştırdığınızda size bir ECDSA key fingerprint iletilecek ve bunu işleyip işlemeyeceğinizi soracak. “yes” cevabını vermenizin ardından tanımlama aşamasının tamamlanması için root şifresi girmeniz istenecek. Bu şifre bir droplet’i ilk kez oluşturduğunuzda DigitalOcean tarafından üye olurken belirttiğiniz e-posta adresine gönderilen e-posta içeriğinde yer almakta. Şifreyi doğru bir şekilde girdiğinizde sizden ayrıca şifreyi değiştirmeniz istenmekte. Şifre değişikliğini de başarıyla tamamlamanızın ardından sunucuya SSH kabuğu üzerinden bağlanmış olacaksınız. Artık bir sonraki aşama olan Mosh kurulumuna geçebiliriz.

İlk İşlemler: Tanımlı Key İle Bağlantı

Halihazırda bir key tanımlama işlemi yapmışsanız ve yukarıdaki bağlıkta belirtilen şifre tanımlama adımını geçmişseniz takip etmeniz gereken süreç daha kısa olacaktır. Yukarıdaki ssh bağlantısını hızlı bir şekilde gerçekleştirdikten ve sorunsuz bir şekilde sunucuyla bağlantı sağladıktan sonra artık bir sonraki aşama olan Mosh kurulumuna geçebiliriz.

Server Mosh Kurulumu (Ubuntu / 16.04)

SSH erişimimiz aktif olmak şartıyla aşağıdaki kodu uygulayabilirsiniz.

apt-get update
apt-get install mosh

Kodun işlenmesinin ardından kurulum tamamlanmış olacak. Herhangi bir sorun olup olmadığını aşağıdaki kodu uygulayarak öğrenebilirsiniz.

mosh --version

Kodun işlenmesinin ardından aşağıdakine benzer bir cevap aldıysanız (sürümler farklılık taşıyabilir) kurulum başarıyla tamamlanmış demektir.

mosh 1.2.5 [build mosh 1.2.5]
Copyright 2012 Keith Winstein <mosh-devel@mit.edu>
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Client kurulumu (macOS / Sierra)

Bilgisayarınızda ise birden fazla kurulum yöntemi tercih edebilirsiniz. Eğer MacPorts, Homebrew gibi bir paket yönetici kullanıyorsanız doğrudan install mosh ile yükleme işlemini gerçekleştirebilirsiniz. Bunun haricinde Chrome eklentisi3 veya binary olarak da erişim sağlayabilirsiniz. Bunlar ve benzeri diğer yükleme yöntemleri için mosh kaynak sayfasını1 inceleyebilirsiniz.

Client olarak telefonunuzu da kullanabilirsiniz. JuiceSSH üzerinden bağlantı seçenekleri arasında yer alan Mosh ile gerekli ayarları yapıp sunucunuza bağlanabilirsiniz._

Yaşanabilecek Sorunlar

SSH bağlantısınız exit ile sonlandırdınız diyelim. Artık Mosh üzerinden erişim sağlayabiliriz.

mosh root@domain-veya-ip-adresi

Yukarıdaki gibi SSH bağlantısı sağlamak istediğimizde kullandığımız komuta benzer bir kullanıma gittiğimizde aşağıdaki dönüşü almamız muhtemel.

/usr/local/bin/mosh: Could not connect to 139.59.94.47, last tried 139.59.94.47: IO::Socket::INET: connect: No route to host
ssh_exchange_identification: Connection closed by remote host
/usr/local/bin/mosh: Did not find remote IP address (is SSH ProxyCommand disabled?).

Bu durumda UDP 60000:61000 arası portları iptables ve/veya ufw ile açmamız gerekli. Öncelikle yine SSH üzerinden bağlantımızı yapmalı ve aşağıdaki ilgili kodu çalıştırmalıyız.

iptables
sudo iptables -I INPUT 1 -p udp --dport 60000:61000 -j ACCEPT
ufw
sudo ufw allow 60000:61000/udp

Kodu onaylayıp exit ile SSH bağlantısını (eğer bir hata almadıysak) sonlandırabiliriz. Ardından tekrar mosh bağlantısını deneyelim. Eğer key tanımlı ise doğrudan mosh bağlantısı sağlanacaktır. Key tanımlı değilse ilk oturumda belirlediğimiz root şifresi ile bağlantımızı gerçekleştirebiliriz. Tanımladığınız şifreyi unuttuysanız ya da başka bir nedenden dolayı şifre hatası almaya devam ediyorsanız droplet şifrenizi resetleyebilir ve e-posta adresinize iletilen şifreyle tekrar bağlantı isteğinde bulunabilirsiniz. Kullanım detaylarıyla ilgili daha detaylı bilgi için Mosh web sayfasının1 yanı sıra GitHub sayfasını4 ve terminal üzerinde mosh –help komutunu kullanabilirsiniz.