it-swarm.asia

SSH'yi nasıl ayarlayabilirim ki şifremi yazmak zorunda kalmayacağım?

SSH'yi nasıl kurarım ki bir ana bilgisayara bağlanırken şifremi yazmak zorunda kalmayacağım?

146
Richard Hoskins

Bir SSH anahtarı oluşturun (sizde değilse)

GNOME kullanıyorsanız, seahorse application ("Şifreler ve Şifreleme Anahtarları") sizin için yapabilir: Dosya -> Yeni -> Güvenli Kabuk Anahtarı.

Eğer terminali tercih ederseniz, bir keypair oluşturmak için ssh-keygen -t <type> komutunu çalıştırın. Geçerli keypair türleri:

  • rsa: varsayılan
  • dsa: 1024 bit tuşlarla sınırlandırılmış hariç, daha çok veya daha az eşdeğer
  • ecdsa: daha küçük anahtarlarla aynı güvenlik, ancak SSH yazılımında nispeten yeni ve biraz nadir.
  • ed25519: Yüksek güvenlik (yan kanal saldırılarına ve zayıf rasgele sayı üreteçlerine daha dayanıklı). Çok hızlı imza üretimi. Çok yeni. Yalnızca OpenSSH> = 6.5 içinde kullanılabilir.

Program sizden bir şifresi ve yeni anahtarın kaydedileceği bir yer isteyecektir. Önerilen diğer yolun kullanılması önerilir, çünkü diğer tüm araçlar orada arayacaktır.

Genel anahtarı uzak sunucuya yükleyin

Yine, seahorse bunu sık sık sizin için yapabilir - in Kişisel Anahtarlarım, SSH anahtarınıza sağ tıklayın ve Güvenli Kabuk için Konfigürasyon anahtarı öğesini seçin.

Veya terminalde ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected].

Veya, adım adım tamamen manuel olarak:

  1. Uzaktaki Ana Bilgisayardaki uzak kullanıcının ana dizininde .ssh adında bir dizin (zaten mevcut değilse) oluşturun.
  2. Bu dizinde, authorized_keys adında bir dosya oluşturun (eğer yoksa).
  3. Uzaktan umask'nızın normalden daha liberal olması durumunda, dosyayı grup olarak yazılabilir yapmayın: chmod go-w ~/.ssh ~/.ssh/authorized_keys.
  4. Son olarak, bir şekilde yerel ortak anahtar (~/.ssh/id_rsa.pub) içeriğini uzak ~/.ssh/authorized_keys dosyasına kopyalayın (ekleyin).

Anahtarı ssh aracısına yükleyin

Özel anahtarınızı bir ssh aracısı içine yüklerseniz, şifresi çözülmüş anahtarı bellekte tutar. Shell'in bir sunucuya ne zaman girdiğimizi tekrar girmesini önlemek istiyoruz.

İlk önce, aracının başlatılması veya başlatılan bir iletişim soketinin yolunun bir değişkene yüklenmesi gerekir. Terminalde çalışan ssh-agent , agent değişkenlerini atamak ve ayarlamak için komutlar üretecektir. Bu komutlar farklı bir terminalde kullanılmak üzere bir dosyaya kaydedilebilir. Alternatif olarak, bir kişi bu komutları çalıştırabilir ve aynı aracı başka bir terminalde tekrar kullanmayı unutabilir. örneğin: eval $(ssh-agent).

Anahtarın yüklenmesi ssh-add dosyasının çalıştırılması ve ona geçiş cümlesi verilmesi ile ilgili basit bir konudur.

GNOME kullanıyorsanız, gnome-keyring-daemon genellikle ssh-agent ile aynı SSH ajanı fonksiyonelliğini sunar, bu yüzden hiçbir şeye başlamanıza gerek yoktur. GNOME, oturum açma sırasında da anahtarı otomatik olarak yükler ve kilidini açar.

Parola olmadan uzaktaki sunucuya Kabuk

Her şey doğru yapılmışsa, ssh [email protected] kullanmak bir parola istemez. Temsilcide anahtarla ilgili bir sorun varsa, sizden kullanıcı hesabının şifresini değil, şifrenin şifresini yazmanız istenir.

İletişim için ssh kullanan herhangi bir şey, aracıya doğru anahtar yüklendiğinde kullanıcı hesabı şifresini girmeden çalışacaktır. scp , sftp ve rsync gibi programları kullanın.


Notlar:

  • Sadece bir SSHv2 anahtarına ihtiyacınız var, çünkü SSHv1 çok güvensiz ve artık kullanılmıyor.
  • Ayrıca yalnızca bir tür anahtara ihtiyacınız vardır - RSA veya DSA yeterlidir. (ed25519 ve ECDSA hem yenidir hem de her yerde desteklenmemektedir).
  • Tüm bu adımlar hem RSA hem de DSA anahtarları için aynıdır. DSA kullanıyorsanız, id_dsa yerine id_rsa kullanın, ECDSA'da id_ecdsa olacaktır.
  • 3.0'dan daha eski olan OpenSSH sunucuları authorized_keys2 kullandı - fakat kullanımda 5,0'dan daha eski bir şey bulmanız pek mümkün değil.
  • Bu talimatlar yalnızca OpenSSH sürüm 3.0 ve daha yenileri için geçerlidir. lsh, ssh.com ve diğer (Unix ve değil) SSH sunucuları bu öğreticiye dahil değildir.

Örnekler:

  • Genel anahtarı uzaktaki bir ana bilgisayara kopyalamak:

     ssh-copy-id -i ~/.ssh/id_rsa.pub myaccount @ remotehost # this 
     
     cat ~/.ssh/id_rsa.pub | ssh myaccount @ remotehost\
     'mkdir -p ~/.ssh; cat >> ~/.ssh/approved_keys '# veya bu 
    
  • Yeniden kullanım için ajan değişkenlerini kaydetme (ayrıntılı örnek)
     ssh-agent> ~/.ssh/cross-terminal-agent 
    . ~/.Ssh/çapraz terminal madde 
    
159
grawity

Hangi Unix'te bulunduğunuzu, hangi Unix'e bağlandığınızı, hangi Shell'i kullandığınızı, hangi SSH varyantını vb. Kullandığınızı belirtmediniz. Bu nedenle bunların bir kısmının biraz ayarlanması gerekebilir; bu, birçok unix varyantında kullanılan OpenSSH'nin oldukça yeni sürümlerine dayanıyor.

Bunların hepsi yerel masaüstü sisteminizden.

ssh-keygen

Anahtar adı için varsayılanı kullandığınızdan emin olun. Bu anahtar üzerinde bir parola ayarlamanızı yapmanızı öneririm, aksi takdirde bu bir güvenlik sorunudur. "-t rsa" kötü bir fikir olmaz, ancak muhtemelen gerekli değildir.

ssh-copy-id [email protected]

Bu sizden oturum açmak için kullanacağınız şifreyi soracak ve yetkililer için anahtarlar için gerekli düzenlemeleri yapacaktır. (elle yapmaya gerek yok)

Sonra bu:

`ssh-agent`

ya da belki bu:

exec ssh-agent sh

veya:

exec ssh-agent bash

Bu, anahtarınızı tutabilecek bir SSH ajanı başlatacak. Birçok modern Unix türünde, grafiksel olarak giriş yaptıysanız, bu zaten gerçekleşmiş olacaktır. İlk değişken (geri tepme çubukları ile) arka plana bir ssh-ajanı yerleştirir ve onunla konuşmak için ortam değişkenlerini ayarlar. İkincisi, ajanın sizin için bir Shell çalıştırmasını sağlayın, böylece Shell'den çıktığınızda, ajan çıkar.

Birçok modern Unix varyantı, özellikle grafiksel olarak giriş yaptıysanız, sizin için çalışan bir araca sahip olacaktır. "ps aux | grep ssh-agent" veya "ps -ef | grep ssh-agent" yu deneyebilirsiniz; Bir şey zaten çalışıyorsa, onu kullanın.

En sonunda:

ssh-add

Bir parola isteyecektir; ssh-keygen'e verdiğin şeyi ver. Grafiksel olarak sormanın da yolları var. Bunu otomatikleştirmek için ssh-agent ve ssh-add şeylerinizi giriş komut dosyalarınıza koyabilirsiniz (kurulum, kullandığınız Shell'e göre farklıdır), ancak bazı Unix varyantları (örneğin, geçerli Ubuntu Linux) bunun çoğunu otomatik olarak yapar. tek yapmanız gereken bir anahtar oluşturmak ve uzak Ana Bilgisayarda ayarlamak için ssh-copy-id kullanmak.

Şimdi, "ssh [email protected]", herhangi bir kimlik doğrulama istemeden çalışmalıdır. Perdenin arkasında, ssh-ajanının tuttuğu bir anahtar kullanıyor ve ajandan bunun için sihirli imza püf noktalarını yapmasını istiyor.

22
freiheit

Bunu PuTTY içinde Windows'ta da yapmak mümkündür.

Genel/özel anahtar çiftinizi ayarladıktan sonra tüm ayarları yapın (burada verilen yanıtların gösterdiği gibi) PuttyGen'i çalıştırın. Buraya önceden kurduğunuz mevcut özel anahtarı yükleyin ve ardından bir PuTTY özel anahtarı (ppk) olarak kaydedin.

Daha sonra PuTTY'de, otomatik olarak oturum açmak istediğiniz kaydedilmiş oturumu tıklayın ve Yükle'yi tıklayın. Buradan, sol bölmedeki Bağlantı -> Veriler kısmına gidin ve "Otomatik oturum açma kullanıcı adı" alanına o uzak sunucunun kullanıcı adını yazın:

PuTTY username entry

Bundan sonra Connection -> SSH -> Auth bölümüne gidin ve PuttyGen'de yaptığınız ppk'ye göz atın:

PuTTY private key entry

Sonra oturum sayfasına geri dönün ve daha önce yüklediğiniz oturumu kaydedin.

ServerFault 'daki çok benzer bir sorudan, sizin için kimlik doğrulama anahtarlarını ayarlamakla ilgili tüm adımları uygulayan ssh-copy-id ' ı kullanmanızı öneririm:

ssh-copy-id, uzaktaki bir makineye giriş yapmak için ssh kullanan bir komut dosyasıdır (büyük olasılıkla bir giriş şifresi kullanarak), bu nedenle, birden fazla kimliğin akıllıca kullanılmasını sağlamadığınız sürece, şifre doğrulamanın etkinleştirilmesi gerekir)

Ayrıca, grup yazılabilirliğini ortadan kaldırmak için uzak kullanıcının evini (~/.ssh ve ~/.ssh/yetkili_key) izinlerini de değiştirir (başka bir deyişle, eğer uzak sshd yapılandırmasında ayarlanmışsa, oturum açmanızı engeller).

-İ seçeneği verilirse, ssh-agent'ınızda herhangi bir anahtar olup olmadığına bakılmaksızın, kimlik dosyası (varsayılan olarak ~/.ssh/identity.pub) kullanılır.

Yapmanız gereken tek şey basitçe şudur:

ssh-copy-id [email protected]

Bir kez şifrenizi yazın ve gitmek için iyi bir konum!

3
Chris Bunch

Tüm bunların dışında, ssh anahtarlarının nasıl ayarlanacağı ile ilgili olarak, oturum açma yerine yalnızca bir sistem işlemi gerçekleştirmenize izin veren Keychain as _ _ (ssh-agent konsol öneri) önerilir.

Aynı şeyi zaten yapan GNOME ve KDE araçları olduğunu biliyorum, ancak eğer konsol junkie tipi iseniz bu harikadır (ve çoğu Unix sistemlerinde kullanılabilir).

Kullanmak için aşağıdakini ~/.bashrc'nuza ekleyin (diğer kabuklara benzer):

if type keychain >/dev/null 2>/dev/null; then
  keychain --nogui -q <all your SSH/PGP keys>
  [ -f ~/.keychain/${HOSTNAME}-sh ] && . ~/.keychain/${HOSTNAME}-sh
  [ -f ~/.keychain/${HOSTNAME}-sh-gpg ] && . ~/.keychain/${HOSTNAME}-sh-gpg
fi
3
scetoaux

PuTTY masaüstünde şöyle bir kısayol oluşturmanıza izin veren bir -pw / seçeneğine sahiptir:

"C:\Program Files\PuTTY\putty.exe" -ssh [email protected] -pw your_password
2
Genc Hosting

Bu gerçekten çok kısa bir öğretici yazdım, gerçekten gerçekten çok gerçekten hayal kırıklığına uğradım gerçekten çok uzun öğreticiler çünkü gerçekten çok basit :)

test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa #press enter twice if given prompts, then "ssh-add"

scp ~/.ssh/id_rsa.pub [email protected]:/tmp/ #type password

ssh [email protected] #type password

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

rm /tmp/id_rsa.pub
2
samthebest

http://linuxproblem.org/art_9.html

Amacınız

Görevlerinizi otomatikleştirmek için Linux ve OpenSSH kullanmak istiyorsunuz. Bu nedenle, Host A/user a ile Host B/user b arasında otomatik bir oturum açmaya ihtiyacınız vardır. Herhangi bir şifre girmek istemiyorsunuz, çünkü ssh'yi bir Shell betiğinin içinden çağırmak istiyorsunuz.

2
TheTXI
  1. Bağlanan Ana Bilgisayarda, ssh-keygen komutunu çalıştırın. (Bir tür belirtmeniz gerektiğini söylerse, ssh-keygen -t rsa yapın.) Bir dosya yeri sorduğunda, varsayılanı alın. Sizden bir şifre istediğinde, şifre girmemek için enter tuşuna basın.
  2. cat ~/.ssh/id_rsa.pub (veya ssh-keygen'daki varsayılan dosya konumu ne olursa olsun, farklı olması için bir really old ssh yüklemenizin olması gerekirdi); çıktıyı panoya kopyalayın.
  3. Bağlanmak istediğiniz hesap olarak hedef ana bilgisayara normal şekilde giriş yapın. ~/.ssh/authorized_keys dosyasını düzenleyin (~/.ssh yoksa, bir yere slogin; bu, doğru izinlerle oluşturmanın basit ve kolay yoludur). Panonuzu (diğer Host'dan gelen id_rsa.pub dosyasını içeren) bu dosyaya yapıştırın.
1
chaos

Hepsini Linux'taki terminalde yapmak istiyorsanız:

Ana Bilgisayarda

cd ~/.ssh /

ssh-keygen -t {rsa | dsa} -b {1024 | 2048 | 4096} -C "istersen bazı yorum metni" -f id_ArbitraryName

{} 'daki öğeler seçeneklerdir, rsa veya dsa kullanın ve bit boyutunu seçin (daha büyük daha güvenlidir)

O zaman izinleri yetkili_keylere ve yetkili_keys dosyalarına eklemelisiniz.

cat id_ArbitraryName.pub >> yetkilinin_ tuşları

kedi id_AribtraryName.pub >> yetkilisi_keys2

Ardından, id_AribtraryName dosyasını, ssh yapmak istediğiniz kutuya indirin. Bağlantı kutusu unix tabanlıysa, bir config dosyası gerekli olabilir (PuTTY'de, yukarıda belirtilen biri).

Bağlantı Kutusunda

Config dosyanızda - vim ~/.ssh/config

Host example.Host.com # veya bilgisayarınızın adı

Kullanıcı kullanıcı adı

IdentityFile ~/.ssh/id_ArbitraryName

Config dosyası 600'ün izinine ihtiyaç duyuyor.

Çok ihmal edilen config sorunla karşılaşırsanız yardımcı olur umarım.

0
nerdwaller