Parolasız SSH girişini nasıl kurabilirim?

226

Şifreyi her zaman girmek zorunda kalmadan ssh yoluyla uzaktan giriş yapmak istiyorum.

  • Nasıl ayarlayabilirim?
  • Parolasız bir oturum yürütmek için farklı bir komut gerekiyor mu?
sordu Oxwivi 04.06.2011 19:24

10 cevap

231

Cevap

Bu komutları yürütün:

ssh-keygen

Sonra kopyalamanız gerekir sunucunuza yeni anahtar :

ssh-copy-id [email protected]
## or if your server uses custom port no:
ssh-copy-id "[email protected] -p 1234"

Anahtar kopyalandıktan sonra, makineye normal şekilde ssh:

ssh [email protected]

Şimdi, komutları çalıştırdığınız belirli makineden bir şifre girmeden giriş yapabilirsiniz.

Örnek

[email protected]:~$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/not-marco/.ssh/id_rsa): 
Created directory '/home/not-marco/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/not-marco/.ssh/id_rsa.
Your public key has been saved in /home/not-marco/.ssh/id_rsa.pub.
The key fingerprint is:
b1:25:04:21:1a:38:73:38:3c:e9:e4:5b:81:e9:ac:0f [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|.o= . oo.        |
|*B.+ . .         |
|*=o .   o .      |
| = .     =       |
|. o     S        |
|E.               |
| o               |
|  .              |
|                 |
+-----------------+

[email protected]:~$ ssh-copy-id [email protected]
[email protected]'s password: 
Now try logging into the machine, with "ssh '[email protected]'", and check in:

  ~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Açıklama

Bu, SSH ile sunucunuza başarılı bir şekilde bağlanabildiğinizi varsayar.

Sizi bir parola kullanmadan tanımlamanıza olanak tanıyan bir SSH Keypair oluşturmanız gerekir. Dilerseniz, şifrenizi bir şifre ile korumayı seçebilirsiniz, ancak bu, tamamen şifre gerektirmeyen SSH erişimine izin vererek boş bırakılabilir.

  1. Önce ssh-keygen dosyasını çalıştırarak SSH Keypair'inizi oluşturun, bu id_rsa ve id_rsa.pub dosyasını oluşturacaktır. % Co_de% dosyası sunucularda ne yazıyor, özel anahtar ( pub ) sizinle kalıyor ve kendinizi nasıl tanımladığınızdır.
  2. Ardından, ortak anahtarınızı sunucunuz ile id_rsa kullanıcısıyla uzaktaki kullanıcı ve sunucunuzla makinenin DNS adı veya IP adresi ile değiştirin. SSH parolanızı sorar, girer ve hepsi başarılı bir şekilde tamamlanırsa, parolaya ihtiyaç duymadan makineye ssh-copy-id [email protected] aracılığıyla erişebilirsiniz.

Kaynaklar

verilen cevap Rinzwind 04.06.2011 19:36
30

Aşağıdaki komutları yazın:

  1. ssh-keygen

    Sorgulama gelene kadar Enter tuşuna basın

  2. ssh-copy-id -i [email protected]_address

    (Bir kez ana bilgisayar sisteminin şifresini sorar)

  3. ssh [email protected]_address

Artık şifreli giriş yapabilmeniz gerekir.

    
verilen cevap Ravindra 17.05.2013 10:45
21

Genelde bunu yaptığım yol aşağıdaki gibidir:

ssh-keygen -t rsa

(Parola sorulduğunda, boş bırakın)

Ardından: % Co_de%

(Bu, klasörün .ssh'ın, hedeflenen ana bilgisayar adında, ana_dosyalar dosyasında, ana_dizin dosyasında olmasını gerektirir)

Elbette, kullanıcı adını istediğiniz kullanıcı adıyla ve ana bilgisayar adını istediğiniz ana bilgisayar adı veya IP adresiyle değiştirin

Bundan sonra, sadece kullandığınız gibi bu kutuya sadece SSH.

    
verilen cevap kyentei 04.06.2011 20:22
18

Normalde bunun için sshpass kullanırım, sudo apt-get install sshpass ile yüklerim ve bunu şöyle kullanır

sshpass -p 'password' ssh [email protected]_server
    
verilen cevap Bruno Pereira 06.12.2011 18:26
9

Bu çözüm, AWS Cloud ve bulut resimleri dahil olmak üzere uzak makinelerine Windows kullanan ssh kullanıcılarına özeldir. > GCE Bulutu

Uyarı

Kısa bir süre önce bu çözümü GCE'de uzaktan verilen yeni dağıtılmış vm resimleri için kullandı.

Kullanılan araçlar:

  1. puttygen macun indirmesi
  2. winscp winscp indirme

Gerçekleştirilecek adımlar:

  1. Puttygen kullanarak genel / özel anahtar çifti oluşturun.
  2. Genel anahtarı sunucunuza bulut veya uzak konumdan yükleyin.

Nasıl yapılır?

1. Bir anahtar / çift oluştur veya mevcut özel anahtarı kullan

Özel bir anahtarınız varsa:

puttygen dosyasını açın, yükle düğmesine basın ve özel anahtarınızı ( *.pem ) seçin.

Özel bir anahtarınız yoksa:

  • puttygen 'ı aç
  • Parametreler bölümünde istediğiniz SSH2 DSA anahtarını (RSA veya DSA'yı kullanabilirsiniz) seçin. Parola alanını boş bırakmanız önemlidir.
  • oluştur tuşuna basın ve (ortak / özel) anahtar çifti oluşturmak için talimatları izleyin.

(kaynak 1’den aşağıda verilen bağlantı)

2. Yeni bir 'authorized_keys' dosyası oluşturun ( notepad ile)

Genel anahtar verilerinizi, PuTTY Anahtar Üreticisinin "OpenSSH authorized_keys dosyasına yapıştırmak için ortak anahtar" bölümünden kopyalayın ve anahtar verilerini authorized_keys dosyasına yapıştırın.

Bu dosyada yalnızca bir metin satırı olduğundan emin olun.

3. Linux sunucusuna yükleme anahtarı

  • WinSCP'yi aç
  • SFTP dosya protokolünü seçin ve ssh kimlik bilgilerinizle giriş yapın.
  • Başarı durumunda, uzak makinenizdeki ana dizin yapısını görürsünüz.

authorized_keys dosyasını uzak makinede ana dizine yükleyin.

4. Doğru izinleri ayarla

.ssh dizinini yapın (mevcut değilse)

authorized_keys dosyasını .ssh dizinine kopyalayın.
(Bu, var olan authorized_keys dosyasının yerini alacak, bunu not edin).

Dosya mevcutsa, bu dosyanın içeriğini mevcut dosyaya eklemeniz yeterlidir.

İzinleri ayarlamak için komutları çalıştırın:

sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys

Artık, her seferinde kimlik bilgilerini girmeden ssh 'yi uzak makineye dönüştürebilirsiniz.

Daha fazla okuma:

verilen cevap devprashant 20.11.2015 10:07
7
  

Şifre Doğrulamayı Devre Dışı Bırak

     

Çünkü SSH sunucularına sahip birçok kişi zayıf şifreler kullanıyor,   çevrimiçi saldırganlar bir SSH sunucusu arayacak, sonra tahmin etmeye başlayacaklar   şifreler rastgele. Bir saldırgan, binlerce şifreyi bir   saat ve hatta yeterli zaman verilen en güçlü şifreyi tahmin edin.   önerilen çözüm, parola yerine SSH anahtarlarını kullanmaktır. Olarak olmak   normal bir SSH anahtarı olarak tahmin etmek zor, bir şifre içermelidir   634 rastgele harfler ve sayılar. Eğer her zaman giriş yapabilecekseniz   Bilgisayarınızı bir SSH anahtarıyla, şifreyi devre dışı bırakmalısınız   kimlik doğrulama tamamen.

     

Şifre doğrulamayı devre dışı bırakırsanız, yalnızca   Özellikle onaylamış olduğunuz bilgisayarlardan bağlanın. Bu kitlesel   Güvenliğinizi artırır, ancak bağlantı kurmanızı imkansız hale getirir   PC'yi önceden onaylamadan kendi bilgisayarından bir arkadaşınızın bilgisayarından veya   anahtarınızı yanlışlıkla sildiğinizde kendi dizüstü bilgisayarınızdan.

     

Parola kimlik doğrulamanızı devre dışı bırakmanız önerilir.   belirli bir sebep değil.

     

Şifre doğrulamayı devre dışı bırakmak için aşağıdaki satırı arayın.   sshd_config dosyanız:

#PasswordAuthentication yes
     

şunun gibi görünen bir çizgi ile değiştirin:

PasswordAuthentication no
     

Dosyayı kaydettikten ve SSH sunucunuzu yeniden başlattıktan sonra   giriş yaptığınızda bile şifre sorulmamalı.

İşte

    
verilen cevap Thufir 15.02.2015 02:10
4

Bir ortak / fiyat anahtarlığı oluşturup yeni oluşturulmuş ortak anahtarımızı kullanarak giriş yaparsanız, şifrenizi yazmanız gerekmeyecektir. Anahtarlık ve / veya ssh aracınızın yapılandırmasına bağlı olarak, anahtarınızı bir parola ile korumanız gerekebilir.

İşte sizin için birçok kısa yoldan biri. Bu yöntemin güvenliği için oluşturulan özel anahtarın özel kalması çok önemlidir! Bunu hiç kimseyle paylaşmamalı veya herhangi bir kapasitede erişime izin vermemelisiniz.

Bu komut, ~/.ssh/ 'da makul bir güçlü anahtar oluşturur:

ssh-keygen -b 4096

~/.ssh/ 'de ortak anahtarınızı id_rsa.pub olarak bulacaksınız. İçeriği, aktarılabilir bir ortam üzerinden (kalem sürücü) aktarılarak veya sunucuda parola doğrulaması etkinleştirilerek authorized_keys kullanılarak ve sonra yeniden devre dışı bırakılarak sunucularınıza ssh-copy-id ~/.ssh/id_rsa.pub [email protected] dosyası eklenmelidir.

Anahtarınızı bir parola ile (ilk adımda) güvenceye almak için seçtiyseniz, bu kodu yerel olarak güvenceye almak için ssh-agent veya Ubuntu anahtar sözcüğünü kullanabilirsiniz, böylece her zaman yazmanız gerekmez.

    
verilen cevap con-f-use 04.06.2011 19:32
3

Uzaktan giriş / şifre vermeden kopyala

Uzak giriş ve uzak kopya için sırasıyla ssh ve scp uygulamaları, bir parola vermeden uzak bir ana bilgisayarla iletişim kurmanızı sağlar. Bu, aşağıda açıklanan bir kimlik doğrulama prosedürünü izlemenizi gerektirir. İstemciye göre, üzerinde oturduğunuz makineyi kastediyoruz ve sunucu ile giriş yapmak istediğiniz makineyi bir şifre vermeden kastediyoruz. Kimlik doğrulama prosedürünün adımları:

  1. Makinenizde zaten yapılmadığı sürece, özel ve genel anahtarlar oluşturmak için ssh-keygen'i çalıştırın. Bunlar $HOME/.ssh dosyasında depolanır.
  2. Ortak anahtar dosyasının içeriğini sunucudaki $HOME/.ssh/authorized_keys veya $HOME/.ssh/authorized_keys2 dosyasına ekleyin.

Üç farklı kimlik doğrulama protokolü vardır. Ssh-keygen'i çalıştırırken türü belirtirsiniz:

  1. SSH protokolü sürüm 1, RSA1: bu varsayılan seçimdir ve dosya kimliğiyle sonuçlanır (özel anahtar, bu dosyanın başkaları tarafından okunamadığından emin olmak için chmod 0700 almalıdır) ) ve identity.pub (genel anahtar).
  2. SSH protokolü sürüm 1, RSA : ssh-keygen -t rsa çalıştırılarak ve id_rsa (private key) ve id_rsa.pub (public key) dosyalarında sonuçların alınmasıyla elde edilir.
  3. SSH protokolü sürüm 1, DSA : ssh-keygen -t dsa çalıştırılarak ve id_dsa (private key) ve id_dsa.pub (public key) dosyalarında sonuçların alınmasıyla elde edilir.

ssh-keygen'i çalıştırırken, varsayılan cevaplara güvenebilirsiniz (bir parola vermediğiniz anlamına gelir). Bu, tüm kurulumu basit ama aynı zamanda güvensiz yapar.

Bir seçenek tarafından kullanılacak anahtarların türünü ssh olarak belirtebilirsiniz; ssh -1 , RSA1 anahtarlarının kullanılmasını zorlar (protokol sürümü 1), oysa ssh -2 ssh 'i RSA’yı dener. Yalnızca veya DSA tuşları (protokol sürümü 2). Aşağıdaki örneklerde, uzaktaki ana makinede RSA1 ve DSA anahtarlarını oluşturup yükleyeceğiz. esneklik. % Co_de% dizininde bir

ile bir config dosyası oluşturabilirsiniz.
Protocol 1,2

RSA / DSA öncesi ssh RSA1 (protokol sürüm 1) bağlantısını dener. (protokol sürümü 2).

RSA1 tuşlarını kullanma

[email protected]   # fill in correct user and remotehost names
cd $HOME/.ssh
# create .ssh on remote host if it is non-existing:
ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi' 
# copy RSA1 key: 
scp identity.pub ${remote}:.ssh
ssh $remote "cd .ssh; cat identity.pub >> authorized_keys"

DSA anahtarlarını kullanma

[email protected]   # fill in correct user and remotehost names
cd $HOME/.ssh
# create .ssh on remote host if it is non-existing:
ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi' 
# copy DSA key: 
scp id_dsa.pub ${remote}:.ssh
ssh $remote "cd .ssh; cat id_dsa.pub >> authorized_keys2"

Bu, anahtarları oluştururken bir parola kullanmadıysanız yapmanız gereken tek şey budur. Bağlantıyı ssh $ uzaktan çalıştırarak test edebilir ve şifre girmeden oturum açıp açamayacağınızı görebilirsiniz ( ssh için .ssh veya -1 seçeneğini kullanmanız gerekebilir). Prosedür, oturum açmak istediğiniz herhangi bir makine için elbette tekrar edilebilir.

Bir şifre kullanmış olsaydınız, özel bir kabuk başlatmak için -2 programını çalıştırmanız ve ardından anahtar / parola 'ı kaydetmek için ssh-agent ' i çalıştırmanız gerekir. > ssh-add ile kombinasyon. Daha fazla bilgi için bu programların sayfalarına bakın.

Parolasız bağlantıların otomatikleştirilmesi için bir komut dosyası: sshd

#!/bin/sh

# create ssh connections without giving a password

if [ $# -lt 1 ]; then
  echo Usage: %pre% [email protected]
  exit
fi
remote=""  # 1st command-line argument is the [email protected] address
this=$HOST   # name of client host

# first check if we need to run ssh-keygen for generating
# $HOME/.ssh with public and private keys:
if [ ! -d $HOME/.ssh ]; then
  echo "just type RETURN for each question:" # no passphrase - unsecure!!
  # generate RSA1, RSA and DSA keys:
  echo; echo; echo
  ssh-keygen
  echo; echo; echo
  ssh-keygen -t rsa
  echo; echo; echo
  ssh-keygen -t dsa
else
  # we have $HOME/.ssh, but check that we have all types of
  # keys (RSA1, RSA, DSA):
  if [ ! -f $HOME/.ssh/identity ]; then
     # generate RSA1 keys:
     echo "just type RETURN for each question:" # no passphrase - unsecure!!
     ssh-keygen
  fi
  if [ ! -f $HOME/.ssh/id_rsa ]; then
     # generate RSA keys:
     echo "just type RETURN for each question:" # no passphrase - unsecure!!
     ssh-keygen -t rsa
  fi
  if [ ! -f $HOME/.ssh/id_rsa ]; then
     # generate DSA keys:
     echo "just type RETURN for each question:" # no passphrase - unsecure!!
     ssh-keygen -t dsa
  fi
fi


cd $HOME/.ssh

if [ ! -f config ]; then
  # make ssh try ssh -1 (RSA1 keys) first and then ssh -2 (DSA keys)
  echo "Protocol 1,2" > config
fi

# copy public keys (all three types) to the destination host:

echo; echo; echo
# create .ssh on remote host if it's not there:
ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi' 
# copy RSA1 key: 
scp identity.pub ${remote}:.ssh/${this}_rsa1.pub
# copy RSA key:
#scp id_rsa.pub ${remote}:.ssh/${this}_rsa.pub
# copy DSA key:
scp id_dsa.pub ${remote}:.ssh/${this}_dsa.pub
# make authorized_keys(2) files on remote host:

echo; echo; echo
# this one copies all three keys:
#ssh $remote "cd .ssh; touch authorized_keys authorized_keys2; cat ${this}_rsa1.pub >> authorized_keys; cat ${this}_rsa.pub >> authorized_keys2; cat ${this}_dsa.pub >> authorized_keys2;"
# this one copies RSA1 and DSA keys:
ssh $remote "cd .ssh; touch authorized_keys authorized_keys2; cat ${this}_rsa1.pub >> authorized_keys; cat ${this}_dsa.pub >> authorized_keys2;"

echo; echo; echo
echo "try an ssh $remote"

kopyalandı: İşte

    
verilen cevap αғsнιη 14.09.2014 10:27
2

Bazı eklemeler yapmak için:

  • Varsayılan olarak Mac ssh-copy-id 'i içermiyorsa, bunu kendiniz yüklemeniz gerekir:

    curl https://raw.github.com/beautifulcode/ssh-copy-id-for-OSX/master/ssh-copy-id.sh -o /usr/local/bin/ssh-copy-id
    chmod +x /usr/local/bin/ssh-copy-id
    

daha fazla bilgiyi burada bulabilirsiniz: İşte

  • Bir port ilettiyseniz, komut şöyle olmalıdır:

    ssh-copy-id "[email protected] -p 2222"
    

alıntıların gerekli olduğunu unutmayın.

    
verilen cevap samluthebrave 14.09.2013 14:14
1

Burada, IdentitiesOnly'yi evet olarak ayarladığınız için, buradaki tüm cevapları okuduysa bile şifreyi girmeleri gerektiğini öğrenebilecek kişiler için bir cevap eklemek istiyorum. Ve buradaki cevap, birden fazla anahtarı yönetmek, git veya sunucu için anahtar olmak için size çok zaman kazandırabilir.

Anahtarı oluşturduktan ve sunucuya kopyaladıktan sonra:

ssh-keygen  # change the file to /home/yourname/.ssh/something
ssh-copy-id -i ~/.ssh/something.pub [email protected]

İşe yaramadığını buldum.

Sonra ~/.ssh/config dosyasını kontrol etmeye gittim, bunu en altta gördüm:

Host *
IdentitiesOnly yes

Sonra yukarıdakileri ekliyorum:

Host somename
HostName 192.168.20.160
User lerner
IdentityFile ~/.ssh/something

Sadece ssh somename girdikten sonra giriş yapabilirim.

Daha sonra favori adlarınızı kullanarak birden fazla ssh tuşu ekleyebilirsiniz ve sadece yukarıdaki dört satır gibi ayarları yapılandırma dosyasına eklemeniz gerekir.

Ana makine, sunucuyu daha sonra bağladığınızda girmek istediğiniz addır; HostName sunucunun ipidir; Kullanıcı, sunucuda oturum açtığınız kullanıcı adıdır; ve kimlik dosyası, oluşturduğunuz anahtarı kaydettiğiniz dosyadır.

    
verilen cevap lerner 24.01.2018 10:08

Etiketlerdeki diğer soruları oku