warning: remote host identification has changed

Ssh protokolü ile uzaktaki bir makinanıza bağlanmaya çalıştığınızda “warning: remote host identification has changed” uyarısını alıyorsanız muhtemelen ayını ip ile başka bir kurulum gerçekleştirmiş olabilirsiniz. Bu durumda ssh in çalışma prensibi doğrultusunda daha önceden ilgili ip için atanan public key numarası doğal olarak değiştiğinden ve sizin(yani ilgili kullanıcının) /.ssh/known_hosts dosyasında bulunan eski identification eşleşmediğinden bu hatayı almanız gayet doğal. Uyarıda genelde çalıştırmanız gereken komutu söyler, yukarıdaki resimde olduğu gibi fakat aşağıdaki screenshottan anlaşılacağı üzere ilgili komutu bildirmeye bilir de. Bu durumda da belirteceğimiz komutu yürütmeniz çözüm olacaktır.

> ssh-keygen -f “/home/fatihaslan/.ssh/known_hosts” -R 192.168.1.100

Linux Sunuculara Şifresiz Olarak SSH ile Bağlanma – SSH Copy ID

Normalde client makinenizden linux sunuculara ssh bağlantısı için komut satırana ssh kullanıcıadı@remoteip tıkladıktan sonra şifre istenir ve şifreyi girdikten sonra sunucuya başarılı bir şekilde login olabilirsiniz.

SSH Copy ID ile sunuculara bağlanırken şifre sormadan login olabileceğiz. Bu işlemin gerekli olduğu durumlar, oluşturduğunuz script’lerde parola sorunu yaşamadan yada dosya çekip, atarken şifre problemi yaşamamak için lazım olabilecek bir yöntemdir.

Bunun için ilk önce Client makinemizde aşağıdaki gibi ssh-keygen komutunu çalıştıracağız. Bu komutu çalıştırdıktan sonra Enter File kısmında direk Enter tuşuna basabilir yada benim gibi bir public key’in dosya ismini(LinuxSunucum.pub) verebilirsiniz. Burada sadece şu fark var, siz isimlendirirseniz dosya oluşturulan kullanıcının Home dizininin altında oluşacak. Hiç birşey girmeden Enter derseniz orda oluşacak dosya ismi id_rsa.pub olacaktır ve bu dosyalar .ssh/ dizini altında oluşacaktır. Daha sonra Enter passphrase ve Enter same passphrese kısmını iki Enter ile geçin. Yani toplamda üç kere Enter tuşuna basacaksınız.

NOT: ssh-keygen direk çalıştırdığınızda oluşturulan şifreleme yöntemi RSA’dir. DSA oluşturmak için komutu “ssh-keygen -t  dsa” olarak kullanmalısınız. Arasındaki fark ise RSA(v1), DSA(v2)’dir.

Oluşan dosyayı ls kontol edelim ve kullanıcının home dizininde olduğunu keşfedelim.

Birde isim vermeden oluşturdum, onunda .ssh/ dizini altında oluştuğunu görelim.

Tabi ben hiyerarşiyi bozmamak adına LinuxSunucum dosyalarını mv komutu ile .ssh/ dinizi altına atıyorum ve son görünüm aşağıdaki gibidir.

> mv LinuxSunucum* .ssh/

Şimdi oluşturduğumuz public key’i aşağıdaki komut aracılığı ile sunucuya kopyalıyoruz, kopyalama sırasında bir kereye mahsus şifreyi girip başarılı bir şekilde key’i kopyaladığımızı görüyoruz.

> ssh-copy-id -i ~/.ssh/LinuxSunucum.pub root@192.168.2.146

Şimdi SSH ile sunucuya bağlanıp şifresiz olarak bağlandığımızı görelim.

> ssh root@192.168.2.146

Sunucu tarafına attığımız key dosyayı görmek ve sağlamasını yapmak için aşağıdaki adımları gerçekleştirebiliriz.

> ls -lash .ssh/

authorized_keys dosyasını okursak eğer root@bt public key bilgileri görmemiz gerekir ki aşağıdaki gibi görebiliyoruz.

> cat .ssh/authorized_keys

MacBook bir cihaz üzerinden Linux sunuculara erişim sağlayacaksanız, brew paket yöneticisi ile ssh-copy-id paketini kurup yukardaki işlemler ile yapabilirsiniz.

> brew install ssh-copy-id

Ubuntu 14.04 root kullanıcısı aktif edip SSH yetkisi verme

Ubuntu için oluşturduğunuz herhangi bir user ile login olduktan sonra aşağıdaki komutu çalıştırın.

>sudo passwd root

Komutu çalıştırdıktan sonra login olduğunuz kullanıcının şifresini soracak, girdikten sonra root için yeni şifreyi girmenizi ardından tekrar girmenizi isteyecek. Sonrasında sisteme root kullanıcısı ile login olabilirsiniz. Çıktı aşağıdaki gibidir.

ur1

Şimdi root’un SSH ile bağlanabilmesi için aşağıdaki yönergeleri uygulayın.

ur2

Gördüğünüz gibi işlemleri yapmadan önce SSH ile bağlantı denediğimde Access denied alıyorum.

İlk olarak aşağıdaki komutu çalıştırarak sshd_config dosyasına girin.

>sudo vi /etc/ssh/sshd_config

ur3

Dosyanın içindeki PermitRootLogin without-password satırını PermitRootLogin yes ile değiştirin.

ur4

ur5

Daha sonra SSH servisini restart edin.

>service ssh restart

ur6

Şimdi root için SSH bağlantısını tekrar deneyelim ve başarılı olduğunu görelim.

ur7

PuTTY ile SSH bağlantısı

PuTTY için detaylı bilgiye bu linkten ulaşabilirsiniz.

Dosya direk portable olarak tıkla çalıştır, şeklindedir.

Programı çalıştırdıktan sonra aşağıda görüldüğü üzere gerekli alanları doldurun.

Save diyerek oturumu kaydedebilir yada open diyerek direk login olabilirsiniz.

pty1

Open dedikten sonra makinaya bu şekilde ilk defa login oluyorsanız aşağıdaki gibi bir uyarı alacaksınız.

pty2

Yes dedikten sonra kullanıcı adı ve şifreyi girdikten sonra aşağıdaki gibi başarılı bir şekilde login olabilirsiniz.

pty3

WinSCP Login ile SSH bağlantısı

WinSCP Login programının özelliklerine bu linkten ulaşabilirsiniz.

Programı çalıştırdıktan sonra Host name kısmına SSH destekli sunucunuzun IP adresini yazarak bağlanabilirsiniz. Ben CentOS yüklü sunucumun IP adresini yazdım. File Protokol tipini SFTP yaptıktan sonra port numarası 22 olacaktır. Zaten otomatikte de 22 gelmektedir. Daha sonrasında user name ve password’u girdikten sonra(Ben root kullanıcısı ve şifresini yazdım) bağlantıyı save diyerek kaydedebilir yada direk login olabilirsiniz. Görsel SSH arayüz desteğiyle sunucunuz üzerinde işlemler yapabilirsiniz.

wsh1

 

wsh2