Etiket Arşivi ssh

Windows 10 OpenSSH client/server yükleme

Windows 10 son güncellemesiyle birlikte Openssh Server ve Client desteği vermeye başladı. Peki nasıl yükleyeceğiz? Öncelikle bilgisayarınızda Windows 10 Fall Creators güncellemesinin yapılmış olması gerekiyor. Bunun için de işletim sisteminizi güncelleyerek Windows 10 Sürüm 1709‘a çıkarmanız yeterli. Windows’unuzun hangi sürümü kullandığını Sistem Özellikleri > Windows Özellikleri > Sürüm‘den kontrol edebilirsiniz. Bilgisayarınızı güncelledikten sonra kurulum aşamasına geçiyoruz.

Ayarlar > Uygulamalar > İsteğe Bağlı Özellikler > Özellik Ekle > OpenSSH Client (Beta) & OpenSSH Server (Beta) Uygulamaları yükledikten sonra kurulum tamamlandı. Görüldüğü üzere gayet basit. Peki nasıl kullanacağız? Öncelikle bilgisayarımı yeniden başlattım (yeniden başlatmadan bende aktif olmadı). Daha sonra komut istemcisini açtım ve Linux üzerinde ssh kullanıyormuş gibi bağlantımı yaptım.

Kaynak: https://www.servethehome.com/say-farewell-putty-microsoft-adds-openssh-client-windows-10

Linux: SSH Keygen ve SSH nickname

Bir sunucuya ssh ile çok sık bağlantı yapıyorsanız her seferinde şifre girmemek için  bilgisayarınızda aşağıdaki şekilde keygen üretip, bu keygeni bağlantı yapmak istediğiniz sunucuya göndermeniz gerekmektedir. Aşağıdaki şekilde bu işlemi yapabilirsiniz.

ssh-keygen -t rsa
ssh-copy-id -i $HOME/.ssh/id_rsa.pub user@server

ssh-copy-id kullanmak yerine ayrı bir yöntem de cat .ssh/id_rsa.pub komutu ile key’i görüntülemek ve sonra bu key’i bağlanılacak olan sunucuda .ssh/authorized_keys dosyasının içerisine eklemektir.

Sunucuya nickname işe giriş yapabilmek için ise ; ~/.ssh/config dosyası aşağıdaki şekilde ayarlanmalı. Bu durumda sunucuya ssh root@nuhazginoglu.com -p 2123  şeklinde bağlanmak yerine ssh nuh şeklinde kolayca bağlanabilirsiniz.

Host nuh
  User root
  HostName nuhazginoglu.com
  Port 2123 (ssh portunuz 22 ise, bu satıra gerek yok.)

Linux: ssh rsync ile otomatik backup alma

Bir linux makineden belli zaman aralıklarında otomatik olarak başka bir makineye backup alınmasını istiyoruz. Bu durumda takip edeceğimiz adımlar aşağıdaki şekildedir.

1.   Öncelikle rsync’ın makinemize kuralım. (yum rsync ya da apt-get install rsync)

2. Backup’ı alınacak makineden herhangi bir klasörü backup’ı saklayacağımız makineye senkronize etmeye çalışalım. Aşağıdaki komutu backup’ı alınacak bilgisayarda çalıştırıyoruz.

rsync -avz -e ‘ssh -p 22’ /home/dosya root@192.168.1.2:/home/yedek/

Yukarıdaki komut dizisi çalıştırıldığında bize 192.168.1.2 ip’li bilgisayarın root kullanıcısının şifresini soracaktır. Eğer şifre doğru girilirse senkronizasyon başlayacaktır ve içerisinde bulunduğumuz makinenin /home/dosya dizini 192.168.1.2 ip’sine sahip bilgisayarın /home/yedek dizinine kopyalanacaktır. Eğer başka bir kullanıcı ile bağlanacak ise komut dizisinde root yerine kullanıcı adını yazmalıyız. Ayrıca başka bir porttan ssh bağlantısı yapmak istiyorsak 22 yerine istenilen port yazılmalıdır. Başarılı bir şekilde kopyalama işlemi tamamlandıysa diğer  adımlara geçebiliriz.

3. Bir önceki adımda görüldüğü üzere rsync’ı ssh üzerinde kullandığımızdan dolayı her çalışmada bize şifre soracaktır. Olayı otomatikleştirmek istediğimizden dolayı bunu engellemeliyiz. Bunun için ssh keygen üretmeliyiz. Backup’ını alacağımız makinede aşağıdaki işlemleri yapıyoruz.

ssh-keygen komutunu çalıştırıyoruz. Bize şifre soracak direk enter’a basıp boş olarak geçelim.

ssh-copy-id –i ~/.ssh/id_rsa.pub “192.168.1.2 –p 22”  komut dizisi ile backup’ı alacağımız makineye keygen’i gönderiyoruz.

Not: Koddaki 22 port numarasıdır. Farklı bir porttan bağlanmak için değiştirilmesi gerekir.

şimdi ssh 192.168.1.2 kodunu çalıştırdığımızda şifre sormadan direkt olarak uzak bağlantı yapıyor olmamız gerekiyor. Burada da sorun yoksa diğer adıma geçiyoruz.

4. Bu adımda rsync kodumuzu script içerisine yazacağız. Böylece scripti  çalıştırdığımızda otomatik olarak dizin senkronize olmaya başlayacaktır. Bunun için bir metin dosyası açıp içerisine aşağıdaki şekilde rsync kodunu yazıyoruz. Dizinler, ip adresi, kullanıcı adı ve port ayarı yapmayı unutmayınız. (Komut dizininde geçen delete komutu backup alınacak dosyalarda silinmiş dosyalar var ise yedeği tuttuğunuz yerden de onları silecektir.)

#!/bin/bash

rsync –avz –delete -e ‘ssh -p 22’ /home/dosya root@192.168.1.2:/home/yedek/

Kodu yazdıktan sonra dosyası .sh uzantılı olacak şekilde kaydediyoruz. Örnek olarak, dosyamızın ismi backup.sh olsun.

Dosyası kaydettikten sonra aşağıdaki şekilde çalıştırıyoruz.

/bin/bash /dizin/backup.sh

Bu işlemden sonra dosya senkronize olmuşsa herşey yolunda gidiyor demektir. Bir sonraki adıma geçiyoruz.

5. Bu adımda yazdığımız scripti cron’a ekleyerek istenilen zaman dilimlerinde scriptin otomatik olarak çalıştırılmasını sağlayacağız. Örnek olarak ben bu scriptin iki saatte bir otomatik olarak çalışmasını istiyorum. Bunun için aşağıdaki komutları yazmam gerekiyor.

job eklemek için öncelikle crontab -e yazıyorum.
vim editörüyle açılan dosyaya 0 */2 * * * /dizin/backup.sh satırını ekliyorum ve kaydediyorum.

Benim örneğimde script her 2 saatte bir çalışacak. Bunu her 15 dakika,1 saat, 1 gün, 1 hafta ve 1 ay gibi sürelere çekebilirsiniz. Bu programlama için cron hakkında internetten detaylı bilgiye ulaşabilirsiniz.

Cron’a işi ekledikten sonra tüm işlemlerimiz tamamlanmış bulunmaktadır. Doğru çalışıp çalışmadığın loglardan takip edebilirsiniz. Doğru çalışıyor ise sorunsuz biçimde belirlediğiniz zaman dilimlerinde backup’ınız alınıyor olacaktır.

Not: İlk kullanımda bende cron permission denied (erişim yetkisi) hatası verdi. Bu hatayı da aşağıdaki komutla giderebilirsiniz.

chmod 711 /dizin/backup.sh