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

Yazar Hakkında
Toplam 180 yazı
Erkan ŞİRİN
Erkan ŞİRİN
10 yılı aşkın süredir yurtiçi ve yurtdışında sektörde büyük veri mühendisliği, platform yönetimi ve makine öğrenmesi ile ilgili çalışmalar yürütmekte ve aynı zamanda birçok kurum ve şirkete danışmanlık ve eğitimler vermektedir. Çalışma alanları: Data ve MLOps platformları, gerçek zamanlı veri işleme, değişen veriyi yakalama (CDC) ve Lakehouse.
Yorumlar (Yorum yapılmamış)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara