SSH SCP yöntemi ile Site Taşıma (+known_hosts, Host Key Verification)

Eğer bu yazıyı okuyorsanız, başınız büyük bir belada gibi hissediyorsunuz demektir. SSH ile sitenizi ya da sitelerinizi başka bir sunucuya aktarmak istiyorsunuz. Ama bir sorun var:

  • Nasıl yapacağınızı bilmiyorsunuz: ‘Bu kolay, tek satır kodla işimizi halledebiliriz’
  • Nasıl yapacağınızı biliyorsunuz ama “Host Key Verification Failed” hatasıyla yüzleştiniz: ‘Bu nispeten daha zor bir görev olacak’

SSH panelinize eriştikten sonra aşağıdaki kodu kendinize göre optimize edip (ip adresi ve hangi klasörü nereye taşıyacağınızı belirleyip) çalıştırdığınızda belirttiğiniz klasördeki tüm dosyalar alt klasörler ve dosyalarla taşınacaktır.

1. SSH SCP ile site dosyalarımı nasıl taşırım?

Önemli noktalar:

  1. “-r” recursive: yinelemeli, tekrarlı anlamına gelir. Bu kodu yazmadığımızda alt klasörlerin ve dosyaların taşınmasını atlamış oluruz.
  2. “root:111.111.111.111” eski sunucunuzun kullanıcı adı ve ip adresidir. Şifreniz ise bu kodu girdikten sonra sorulacak.
  3. /home/vhosts/senindomainin.com/public_html /home/senindomainin.com/” ifadesinde kalın harflerle yazılan ilk kısım eski sunucunuzda taşımak istediğiniz dosyayı ikinci kısım ise yeni sunucunuzdaki yeri belirtir.
  4. “/home/vhosts/senindomainin.com/public_html /home/senindomainin.com/public_html” yapmıyoruz. Neden? Çünkü taşıdığı klasörü karşı tarafta kendisi oluşturuyor.
  5. “/home/vhosts/senindomainin.com/public_html /home/senindomainin.com/” klasörü sunucunuza ve kontrol panelinize (cpanel, plesk, centos web panel vs.) göre değişir. Örneğin: “var/www/senindomainin.com/public” şeklinde olabilir.
  6. Bu klasörleri sadece site için özel seçebilir ya da tüm sitelerinizin bulunduğu dizini doğrudan taşıyabilirsiniz. Yeni ve eski sunucunuz işletim sistemi ve kontrol paneli olarak, sürümler açısından da, birebir aynıysa sitenizi tüm dosyalarıyla (dosyalar, veritabanları, mailler, log kayıtları vs.) doğrudan taşıyabilirsiniz.
  7. Bu klasörlerin yerini bulamıyorsanız Windows için “WinSCP” programını edinerek dosyalarınızın hem eski hem yeni sunucuda yerlerini belirleyin. WinSCP tamamen ücretsizdir, diğer işletim sistemleri için alternatif programlar bakabilirsiniz.
scp -r root@111.111.111.111:/home/vhosts/senindomainin.com/public_html /home/senindomainin.com/

2. Host Key Verification Failed hatası alıyorum, ne yapmalıyım?

Öncelikle bu hata ne anlama geliyor ona bakalım. Güvenli sunucular, scp gibi bir yöntemle dosya aktarırken genellikle karşı sunucuya bir anahtar ile izin verirler. Eğer bu hatayı alıyorsanız, karşı sunucuda bir anahtar oluşturmanız veya var olan eski anahtarınızı silerek yenisiyle işlem yapmanız gerekmektedir.

Bu problemi çözdükten sonra yukarıdaki kod ile dosyalarınızı aktarabileceksiniz.

Adım 1:

Öncelikle küçük bir sorununuz olacak, bu anahtarlar “~/.ssh/known_hosts” adresinde bulunuyor. Buradaki “. (nokta)” işareti bu klasör gizli demek. ” ~/” ise, önceki klasörleri siz bulacaksınız demek. Bu root klasöründe de olabilir. Her bir domaininize ait dizinde de olabilir. Bu konuda en büyük tavsiyem Windows kullanıcısıysanız WinSCP programını kullanmanız. Bu programda “Ctrl + Alt + H” yaptığınızda gizli dosyaları görebiliyorsunuz (büyük nimet). Bu dosyaları bulmak sizin işiniz, şanslıysanız onu root klasörünün içinde bulursunuz…

Adım 2:

Bu adıma geçtiyseniz dosyayı buldunuz demektir. WinSCP kullanıyorsanız çift tıklayıp dosyaya bir bakmanızı tavsiye ederim. WinSCP kullanmıyorsanız ve sadece ssh üzerinden erişim sağlıyorsanız centos için “yum install nano” ubuntu için “sudo apt-get install nano” gibi yöntemlerle nano kurmanızı tavsiye ederim (nano ssh üzerinden dosyaları açıp değiştirip kaydetmenize yarar).

Bu dosyanın yanı sıra aynı klasörde known_hosts.old isimli bir dosya daha görebilirsiniz. Bu dosya eski kayıtların saklanması için. İkisine de göz gezdirin.

Eğer yeni sunucunuzun ip adresine iki tane key tanımlanmışsa üsttekini yani eski olanı silin, işleminiz bu kadar.

Eğer burada yeni sunucunuzun ip adresi yoksa, daha işiniz var ve 3. Adıma geçeceksiniz demektir.

Adım 3:

Bu adımdaysanız known_hosts klasörüne yeni sunucunuzun ip adresini eklemeye çalışıyorsunuz demektir. Bu adımda anlattığım ssh kodları centos içindir, bu kodlar diğer sistemlerde çalışmazsa aynı işi yapan paralel kodları bulmanız gerekebilir.

Sırasıyla aşağıdaki kodları çalıştırıyoruz:

# ssh-keygen -R root
# ssh-keygen -R 111.111.111.111
# ssh-keygen -R root,111.111.111.111
# ssh-keyscan -t rsa 111.111.111.111 >> ~/.ssh/known_hosts

Bu işlemden sonra tekrardan
~/.ssh/known_hosts” dosyamızı kontrol edip, ip adresimiz için bir keygen oluşturulup oluşturulmadığını kontrol ediyoruz. Ve oluştuğunu gördükten sonra en üstteki SCP kodunu tekrar çalıştırıyoruz ve işe yaradığını görüp rahatlıyoruz (umarım öyle olur).

İyi çalışmalar dilerim…