BG-9: Sanal Makineleri Kopyalama ve Parolasız SSH Bağlantısı
Baz şablon sunucu hazırlandıktan sonra bunu cluster planındaki sunucu sayısı kadar çoğaltıyoruz. Benim planımda 6 sunucu kurmak vardı, o yüzden 6 tane kopyaladım. Bu yazıda kopyalanmış sunucuların içine tek tek girip ip ve hostname değişikliği yapacağız. Tek tek yapmak ip çakışmasını önlemek için önemlidir. Sonrasında sunucular arasında passwordless-ssh kuracağız. Passwordless-ssh Ambari ile yapılan kurulumlarda büyük kolaylık sağlamaktadır.
1. VMware ile Sanal Makine Kopyalamak
Baz şablon sunucumuzu tamamıyla hazırladık. Artık onu clusterdaki sunucu sayımız kadar (6 adet planlamıştık) çoğaltabiliriz. Bunun için aşağıdaki adımları takip edelim:
Baz şablon sunucumuzu (basecenos7min) kapatalım. VM menüsünden aşağıdaki clone seçeneğine tıklayalım.
Karşımıza çıkan ilk iki menüyü geçtikten sonra aşağıdaki arayüz gelecektir. Burada full clone işaretleyelim.
Bir sonraki menüde makine ismini ve kopyalanacak hedef dizini belirlememizi isteyecektir. Ben belirlediğimiz isimlendirme planına göre (node1, node2 ….node6) her bir kopyalamada tek tek makine isimlerini veriyorum. Aşağıda node3 için bir örnek ekran görüntüsü bulunmaktadır.
2. Sunucu IP ve İsimlerini Değiştirme
Altı adet aynı isimde ve ip numarasına sahip sunucumuz hazır. Şimdi onlara tek tek bağlanıp IP numaralarını ve isimlerini (hostname) değiştirmeliyiz. Bu işlemden sonra da birbirleri ile parolasız iletişim kurmalarını sağlamalıyız. node3 sunucusunu ben örnek olarak yapacağım. Siz kalanları diğer sunuculara da yaparsınız. /etc/sysconfig/
network dosyasından HOSTNAME = node3.datalonga.com
yapıyoruz.
[root@basecentos7min ~]# nano /etc/sysconfig/network [root@basecentos7min ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=node3.datalonga.com GATEWAY=192.168.150.2
/etc/sysconfig/network/sysconfig/network-scripts/ifcfg-ens33
içine girip ip numarasını 192.168.150.53
yapıyoruz.
[root@basecentos7min ~]# nano /etc/sysconfig/network-scripts/ifcfg-ens33 [root@basecentos7min ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="no" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="c191f958-fa39-4d1c-a5be-2cf303bb6d0a" DEVICE="ens33" ONBOOT="yes" IPADDR="192.168.150.63" PREFIX="24" GATEWAY="192.168.150.2" DNS1="192.168.150.2" DNS2="8.8.8.8"
Hostname’i kalıcı olarak node3 yapıyoruz.
[root@basecentos7min ~]# hostnamectl set-hostname node3.datalonga.com [root@basecentos7min ~]# init 6
Sunucu açıldığında hostname’i kontrol ediyoruz.
[root@node1 ~]# hostnamectl Icon name: computer-vm Chassis: vm Machine ID: 3e550b59eafb458a97cb46a4e08ea0f3 Boot ID: a76a428b0f834973b315b8dd2c3f4053 Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-693.2.2.el7.x86_64 Architecture: x86-64
Aynı işlemleri kalan sunucular için de yapıyoruz.
3. Sunucular Arası Parolasız SSH Bağlantısı Kurmak
6 sunuculuk clusterımızda bir sunucumuzu edge sunucu olarak seçiyoruz. Bu sunucumuza Ambari, local repository, web sunucu, metadata için mysql veri tabanı kurulumu gibi işlevler için kullanacağız. Cluster planı yazımızda hangi sunucuyu ne amaçla kullanacağımızdan bahsedeceğiz. Ben edge sunucu görevini bode3 isimli sunucuya vereceğim. Bu sunucumuzda ssh-keygen komutu ile iki adet anahtar üreteceğiz. Birincisi açık(public) olanını diğer sunucularımıza kopyalayacağız. İkincisi ise kapalı (private) anahtar. O bu sunucuda kalacak. node3 sunucumuza bağlanıyoruz. Aşağıdaki şekil konuyu biraz daha anlaşılır kılacaktır.
SSH-keygen ile Anahtarları Oluşturmak
node3 sunucusundayız.
[root@node3 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:xaaRmctD2MAX2xDo+wH+SjS5467OlO3K1iHuVClLkF4 root@node3.datalonga.com The key's randomart image is: +---[RSA 2048]----+ | ...+o | | . o+.O | | o E...O = | | . o o= * | | . o.*oS | | ..B+o.. | | .=o=+ . | | =o+..o | | +B+=. | +----[SHA256]-----+
Yukarıda görüldüğü üzere iki adet anahtar ürettik. node3 sunucusunda kalacak kapalı (private) anahtar /root/.ssh/id_rsa
dosyasına kaydedildi. Diğer sunuculara kpyalayacağımız açaık (public) anahtar ise /root/.ssh/id_rsa.pub
dosyasına kaydedildi. Anahtarlarımızı görelim. Önce sunucuda kalacak kapalı(private) anahtar:
[root@node3 ~]# cat .ssh/id_rsa -----BEGIN RSA PRIVATE KEY----- MIIEpgIBAAKCAQEAuY7/FCFgbAb2wq+SX56FH8beuCrkv6RE/pw0rvWVeLS7rcHB cBOQizNzcArnJiKVxnjv97EG6gBYd6tqo42PF69B1LgtVDgPbduYUDjO2CkZy8hb k3lY/MDa0/9utMd5S0oh9eAvyJAyMhMv9TAcD7HyWmyRejSARn/tlw/ClzFy2bPP cNtNTIH5a27+Hvvxrkkywry3sXJmbc2ewY/acgKY3yHGUfBKtKx3+GXwUcUccO1t 6OrB9rP+AefkK5zwC88dwhiEilwJQsyQ03cV5NsQfMkRMWLTKIh9K/S/PMLuN42t f/P9MqJuPvoJhnnl4qR66qvvHtn2mn0pbGON7wIDAQABAoIBAQCNxkT8g3fhcfyt yWmj50E9gzv+KL+38PHKO11BZGA85pIS81wxnrEsujX0IFB14azgBN0MOdTXi0YM wQrsRadT6FL7DXGMzHx1anfYq17W56hO/BmD9w5Xp55KpfpW46W4Mb761ryLmCjR +7kDtCtsjoBmOFd6sIxl0S6d4avCyfcRHZ5Z+iRqLKYaS1mn1mfm3vBLoeHQRndB 6JrimnkJx4ZjsHD4pBmlf9P7NAsPVxiGvaYj+WAf1ZMriwjewMc7HGGwyCj1JCkc 3innumdRkdQVE2yfo6tOseXnClwjJsA0+ONEQd3x9tpcZi2MfTTXgzoR2ic+fLwR KwyUWBMBAoGBAOARegYJ1Q+tZJqPS4aftPMZmcGZ1M5FkPH//7eY9XE65u0T1wfJ Hu5TWjmX+UBXMwsH954DnN9QjAJXJtZuvRRGZV82XDg+AA2D5H9bhgG2okhGR6zP sshIxDkyGi34chgXAyTAFUhvx0nE88kRHrDh0vd8qQUjgcjaplDiHVxvAoGBANQA mSDFyv1RzsjKvP8Z4px0WW7Yk6uW7+Ew63mUn8VQ+YIcSm3VKGfJzHI2Zj6I5xxQ 3SpIO/nDAfyXfoBtqvBPC2S7q+NcqE/vB4beRH1XJuphZvJOJWQKOvcf6k7bhlJr XNT982aOOTdyr2fJJujC6lzJ7bObUic/KUbM2KaBAoGBAIoN2ov75N1a7QBZx6Pz pK6fmF9zY22P6SVhoHHDeX5BV2S886DlZvxaON4BZ94fm+BxETy3ZyEkZI9QmSpH YpIqaW0Hdjxk3u101QUvI9rMZyJ2wtSTx8ilJNlEqGKoj8uN6i7rdnGCBVzLT5UT ykAbcztvAEidPuq85PoyxvpbAoGBAK0NL/HIgsH1HU5Z75xsjMYZU0dgEmpmcrjn Lc+4uhJe3syOO1McRDc0SmaQcTVqmvxKJb516D8gJ2cAYoqC+p3eZ/Z6Gv0kjV9y RjqZBF8r3OBFUbtIfs0CbM98hc6I80Qjz0stYJm+ToYsX3HgiJpHQPcs/ZM2ngDb Vd4tKEwBAoGBANsspdaOVOe/FkT2u5i1pk7GNb6RW1F6heI9pCpX45zQQfb8BKcR zqv98mExSt5zEf/vJvnVTJHC8dKvmQoqrkvBLSB+GFhBGcKvJ2hoNdtAHkGtwdoy yx87/6rNH/cVl2ySLXAtlf4GDMx/w+NdG1uveqlpjTuMvFwQnCa8k4TW -----END RSA PRIVATE KEY-----
Diğer sunuculara göndereceğimiz açık (public) anahtar:
[root@node3 ~]# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5jv8UIWBsBvbCr5JfnoUfxt64KuS/pET+nDSu9ZV4tLutwcFwE5CLM3NwCucmIpXGeO/3sQbqAFh3q2qjjY8Xr0HUuC1UOA9t25hQOM7YKRnLyFuTeVj8wNrT/260x3lLSiH14C/IkDIyEy/1MBwPsfJabJF6NIBGf+2XD8KXMXLZs89w201Mgflrbv4e+/GuSTLCvLexcmZtzZ7Bj9pyApjfIcZR8Eq0rHf4ZfBRxRxw7W3o6sH2s/4B5+QrnPALzx3CGISKXAlCzJDTdxXk2xB8yRExYtMoiH0r9L88wu43ja1/8/0yom4++gmGeeXipHrqq+8e2faafSlsY43v root@node3.datalonga.com
Anahtarlarımızı gördükten sonra şimdi gelelim açık anahtarı kopyalamaya. Aslında sadece kopyalamayacağız ilaveten hedef sunucularda bu anahtarı authorized_keys
dosyasına ekleyeceğiz. node2
için yapacağım işlemleri diğer nodelar için de yapacağız.
Açık Anahtarı (Public Key – id_rsa.pub) Diğer Sunuculara Kopyalamak
Açık anahtarımızı önce hedef sunucumuz node2
root dizinine kopyalayalım.
[root@node3 ~]# scp .ssh/id_rsa.pub root@node2: id_rsa.pub 100% 406 360.0KB/s 00:00
node2’ye bağlanalım (Ben Cygwin64 termina üzerinden ssh ile bağlanıyorum)
[root@node3 ~]# ssh root@node2 root@node2's password: Last login: Sat Sep 30 00:41:35 2017 from 192.168.150.130
root şifremizi girmemiz gerekiyor. Bu sunucuya bağlandıktan sonra root dizinin gizli dosyaları da gösterecek şekilde listeleyelim:
[root@node2 ~]# ls -al total 32 dr-xr-x---. 3 root root 267 Sep 30 00:43 . dr-xr-xr-x. 17 root root 244 Sep 26 12:05 .. -rw-r--r-- 1 root root 0 Sep 28 15:52 1, -rw-r--r-- 1 root root 0 Sep 28 16:18 1,} -rw-r--r-- 1 root root 0 Sep 28 16:18 1,dump= -rw-r--r-- 1 root root 0 Sep 28 15:52 2, -rw-------. 1 root root 1370 Sep 24 21:20 anaconda-ks.cfg -rw------- 1 root root 3797 Sep 29 23:20 .bash_history -rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout -rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile -rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc -rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc -rw-r--r-- 1 root root 0 Sep 28 16:18 defaults,noatime,pass= -rw-r--r-- 1 root root 0 Sep 28 15:52 defaults,relatime, -rw-r--r-- 1 root root 406 Sep 30 00:43 id_rsa.pub drwx------ 2 root root 25 Sep 30 00:43 .ssh -rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
.ssh gizli klasörü ve node3’ten kopyaladığımız id_rsa.pub anahtarımızı görüyoruz. Şimdi bu anahtarımızı .ssh/authorized_keys’e ekleyelim. (Eğer .ssh dizini yoksa mkdir .ssh
komutu ile oluşturabilirsiniz)
[root@node2 ~]# cat id_rsa.pub >> .ssh/authorized_keys
Eklenmiş mi bir görelim:
[root@node2 ~]# cat .ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5jv8UIWBsBvbCr5JfnoUfxt64KuS/pET+nDSu9ZV4tLutwcFwE5CLM3NwCucmIpXGeO/3sQbqAFh3q2qjjY8Xr0HUuC1UOA9t25hQOM7YKRnLyFuTeVj8wNrT/260x3lLSiH14C/IkDIyEy/1MBwPsfJabJF6NIBGf+2XD8KXMXLZs89w201Mgflrbv4e+/GuSTLCvLexcmZtzZ7Bj9pyApjfIcZR8Eq0rHf4ZfBRxRxw7W3o6sH2s/4B5+QrnPALzx3CGISKXAlCzJDTdxXk2xB8yRExYtMoiH0r9L88wu43ja1/8/0yom4++gmGeeXipHrqq+8e2faafSlsY43v root@node3.datalonga.com
Evet eklenmiş.
Son olarak .ssh ve .ssh/authorized_keys
dizinlerine yetki verelim.
[root@node2 ~]#chmod 700 .ssh [root@node2 ~]#chmod 600 .ssh/authorized_keys
Artık biz node3’ten node2’ye ssh ile bağlantı kurmak istediğimizde parola sormadan izin vermesi gerekir. Deneyelim:
[root@node2 ~]# exit [root@node3 ~]# ssh root@node2 Last login: Sat Sep 30 00:46:41 2017 from 192.168.150.130 [root@node2 ~]#
Gördüğümüz gibi node3’ten node2’ye parolasız bağlandık. Aynı işlemleri kalan sunucular için de yapalım. Önemli bir hatırlatma node3’ün kendi ürettiği id_rsa.pub dosyasını kendi authorized_key’ine eklemeyi unutmayınız.
Böylelikle paswordless-ssh işlemleri tamamlanmış oldu.
Kapak: Photo by iMattSmart on Unsplash