İçerikler :

authorized_keys JSch - Java Secure Channel known_hosts Dosyası OpenSSH - OpenBSD Secure Shell Secure Copy - SCP SSH2 - Secure Shell 2 SSH ile Bir Sunucuya Şifre Girmeden Erişmek SSH İle İlk Bağlantı ssh-keygen SSH - Secure Shell SSH Sunucusuna Nasıl Güveniyoruz? Sunucuki SSH Versiyonunu Öğrenmek

Bu Sayfayı Paylaş:

Kavram

SSH - Secure Shell

Tanım: Bir bilgisayardan diğer bilgisayara güvenli erişim için kullanılan protokol. Sunucu ile istemci arasında açık anahtarlı şifreleme ile veriler kriptolanmaktadır. Özellikle Linux-Unix sunucularına SSH ile kullanıcı adı ve şifre girmeden bağlanılabilir. ssh uzak_kullanıcı_adı@uzak_sunucu_adı şeklinde ssh komutuyla uzak sunucuya bağlanabilir. SSH varsayılan olarak 22 portunu kullanır

Kavram

SSH2 - Secure Shell 2

Tanım: SSH (Secure Shell) protokolünün IETF tarafından standart haline getirilmiş, SFTP desteği eklenmiş, daha güvenli bir üst versiyonu. SSH'ın birinci versiyonu yerine daha çok SSH2 kullanılımaktadır.

Kavram

OpenSSH - OpenBSD Secure Shell

Tanım: SSH protokolüne uygun, uzak sunuculara bağlanmayı sağlayan network araç seti. ssh, scp, sftp, ssh-add, ssh-keysign, ssh-keyscan, ssh-keygen, sshd, sftp-server, and ssh-agent gibi araçları içermektedir

Veri

SSH İle İlk Bağlantı

Bir sunucuya ilk defa SSH ile bağlanıldığında uyarı gelmektedir.
ssh uzak_kullanıcı_adı@uzak_sunucu
The authenticity of host 'uzak_sunucu_host (uzak sunucu ip)' can't be established.
RSA key fingerprint is 29:3a:97:f9:14:bb:17:8e:bf:e3:ce:5b:b1:9b:66:31.
Are you sure you want to continue connecting (yes/no)? 

Eğer yes seçilirse ekrana basılan rsa anahtarinı ~/.ssh/known_hosts dosyasına ekler. Aynı sunucuya bir daha ssh ile bağlanmaya çalışıldığında yukarıdaki mesaj tekrar çıkmaz

Kavram

known_hosts Dosyası

Tanım: IP - rsa anahtar şeklinde, SSH ile girilen sitelerin bilgilerinin tutulduğu dosya. İlk defa bir sunucuya SSH ile girildiğinde, bu dosyaya sunucu adı - rsa anahtarı şeklinde sunucu bilgisi bu dosyaya eklenir

Kavram

Secure Copy - SCP

Tanım: SSH protokolü üzerinden , uzak bir sunucu ile dosya alışverişi yapmak için kullanılan bir komut satırı aracı. scp dosya kopyalanacak_yer şeklinde local bilgisayardaki bir dosyayı uzak bilgisayara gönderebilirsiniz.

İpucu

Sunucuki SSH Versiyonunu Öğrenmek

Bir sunucuda SSH server'ın kurulu olup olmadığını ve kuruluysa versiyonunu öğrenmek için aşağıdaki komut kullanılabilir:
ssh -V
Bu komut örneğin aşağıdaki gibi bir çıktı üretebilir:
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013

Kavram

ssh-keygen

Tanım: Unix-Linux'da SSH protokolünde kriptolamak için kullanılan anahtarların üretilmesi ve yönetilmesini sağlayan araç

İpucu

SSH ile Bir Sunucuya Şifre Girmeden Erişmek

SSH ile bir sunucuya her eriştiğinizde şifre girmek istemeyebilirsiniz. Bunun için açık anahtarlı şifreleme adı verilen bir yöntem kullanılmaktadır.
Önce local bilgisayar için (bağlanılmak istenilen remote, bağlanmak isteyen client) private ve public anahtar çifti oluşturmanız gerekiyor. Bunun için ssh-keygen aracını kullanabilirsiniz.
Private ve public anahtarı oluşturduktan sonra (Unix-Linux da bu anahtar dosyalarını ~/.ssh klasörü altında bulabilirsiniz) public anahtar içeriğini uzak sunucuya tanıtmanız gerekmektedir. Genellikle public key, ~/.ssh/authorized_keys dosyası içine eklenmektedir. Uzak sunucuya public anahtarınızı tanımlattığında, artık ssh ile şifre girmeden uzak sunucuya bağlanabilirsiniz.
Local sunucuda aşağıdaki komut ile anahtar oluşturmaya başlayabilirsiniz :
ssh-keygen -t rsa
aşağıdakile benzer aşamalardan geçmeniz gerekir. passphrase boş bırakmanız gerekir aksi takdirde bu şifre ssh yaptığınız zaman istenmektedir.
Generating public/private rsa key pair.
Enter file in which to save the key (/~/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Your identification has been saved in ~/.ssh/id_rsa
Your public key has been saved in ~/.ssh/id_rsa.pub
Oluşturulan id_rsa private, id_rsa.pub ise public anahtardır.
Public anahtarı uzaktaki sunucudaki sunucuya ~/.ssh/authorized_keys dosyasına eklemeniz gerekir. Bunun için aşağıdaki komutu kullanabilirsiniz :
cat ~/.ssh/id_rsa.pub | ssh uzak_kullanıcı_adı@uzak_sunucu 'cat >> ~/.ssh/authorized_keys'

Yukarıdaki komut id_rsa.pub içeriği alır, ssh ile uzaktaki sunucudaki authorized_keys dosyası içine ekler.

Kavram

authorized_keys

Tanım: Bir sunucuda, o sunucuya bağlanabilen istemci bilgisayarlarının public anahtarlarının bulunduğu dosya. Bir istemci bilgisayar kendi üzerinde bir private bir de public anahtar oluşturur. İstemci bilgisayarın oluşturduğu public anahtar authorized_keys dosyasına eklenirse, istemci sunucuya şifre girmeden artık bağlanabilir. authorized_keys dosyası ~/.ssh/authorized_keys konumundadır.

Alıntı

SSH Sunucusuna Nasıl Güveniyoruz?

SSH ve HTTPS bir çok yönden benzeyen protokollerdir
Sahipleri : Necdet Yücel
SSH ve HTTPS bir çok yönden benzeyen protokoller. Daha önce HTTPS hakkında yazdığım için benzer şeyleri tekrar etmek yerine SSH'ın temel bir farkından bahsetmek istiyorum.
Bir SSH bağlantısı için istemci ve sunucu önce selamlaşıyor, ardından sunucu sertifikasını gönderiyor, istemci sertifikayı onayladıktan sonra sertifika içindeki açık anahtarla bir oturum anahtarı oluşturuluyor ve iletişim bu anahtarla şifrelenerek yapılıyor. HTTPS ile olan bu benzerliğin en önemli farkı sertifikayı onaylama kısmı oluyor. HTTPS için kullanılan sertifikalar çoğunlukla güvenilen Sertifika Otoriteleri (CAs) aracılığı ile üretildiğinden tarayıcılarımız sertifikaları onaylamak için onları kolaylıkla kullanabiliyor. SSH için kullanılan sertifikalar ise hemen hemen her zaman sunucu tarafında kendinden imzalı bir şekilde üretiliyor. SSH bağlantısının bütün güvenliği bu sertifikanın güvenilir olması üzerine kurulu olduğundan istemcinin bu sertifikayı bir şekilde onaylaması gerekiyor. SSH istemcilerinin sertifikaları onaylamak için farklı seçenekleri var:

Sunucu anahtarının parmak izinin kontrolü

Bir SSH sunucusuna bağlanmak için ilk isteği yaptığımızda aşağıdaki gibi bir durumla karşılaşıyoruz.

Bu aşamada eğer sunucu anahtarının parmak izini bilmiyorsak onaylayabileceğimiz bir şey de yok demektir. İlk aşamada "8iz5L6iZxKJ6YONmad4oMbC+m/+vI9vx5C5f+qTTGDc" gibi bir ifadenin ezberlenmesi imkansız gibi görünse de yapılamaz değil ama oldukça zor olduğunu kabul edelim.

Randomart kullanmak

Sunucunun anahtarının parmak izi yerine ondan üretilmiş bir konsol görselini akılda tutmak daha kolay bir seçenek. Eğer ssh'ı "-o VisualHostKey=yes" parametresiyle kullanırsak aşağıdaki gibi bir görsel görüp onu onaylayabiliriz:

Hem sunucu anahtarının parmak izi hem de ondan oluşturulan bu görsel tek yönlü fonksiyonlar kullanılarak üretildiklerinden tamamen aynısı değil de çok küçük (mesela tek karakterlik) bir farkla üretilemezler. Yani tamamını hatırlamasak bile genel olarak aklımızda tutarak bile sertifikayı onaylayabiliriz aslında.

DNS kullanarak

Sunucu anahtarının parmak izinin doğruluğunu bizim yerimize onaylayabilecek bir mekanizma olması işimizi çok kolaylaşmaz mıydı? Sertifikaları kendimiz oluşturduğumuz için bir CA'dan yardım alamıyoruz ama SSH bağlantısını makine adıyla yapıyorsak mecburen kullanmak zorunda olduğumuz DNS sunucuları burada imdadımıza yetişiyor. Makine adına karşılık gelen IP adresini nasıl DNS sunucusuna sorabiliyorsak aynı şekilde sunucu anahtarının parmak izini de sorabiliriz. Bu işlemi de -o "VerifyHostKeyDNS=yes" parametresiyle yapıyoruz. Eğer sunucumuzla ilgili böyle bir DNS kaydı girilmişse aşağıdaki gibi bir cevap alırız sunucudan:

DNS sunucusuna eklenecek tek satırlık bir girdi ile kullanıcılarımıza bu imkanı sunabilecekken neden kullanılmıyor bilemiyorum doğrusu. Belki bu yazıyı okuduktan sonra siz kullanırsınız ;)
Bu yöntemi kullanırken DNS sorgularının güvenilir bir yöntemle gönderilip alınmadığını aklımızdan çıkarmamamız gerekir. DNSSEC ve DNSCrypt çok daha yaygın kullanılması gereken protokoller ama maalesef neredeyse hiç kullanılmıyorlar.

Kavram

JSch - Java Secure Channel

Tanım: Java dili için yazılmış açık kaynak bir SSH2 implemantasyonu. Bu API ile sshd sunucusuna bağlanabilirsiniz, port ve X11 forwarding, dosya transferi (S-FTP) yapabilirsiniz.



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir