Varsayılan olmayan kimlik dosyası konumuna sahip şifresiz SSH


16

Bir başlangıç ​​komut dosyasının bir parçası olarak birkaç gnome terminal penceresini otomatik olarak açmam gerekir, bu terminallerden biri otomatik olarak gönderir:

ssh user@192.168.1.3

Bununla ilgili sınırlama, SSH bağlantısını tamamlamak için hala bir parola yazmam gerektiğidir.

Yapmak istediğim komut dosyamın komutu başlatması ve bağlantıyı tamamlaması. Bu kapsamda, burada kabul edilen cevapta belirtilen talimatları izlemeye çalıştım .

Bağlanmak istediğim sistemden koştum:

ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key

Daha sonra bir parola girmemi istedi. Bunun için ne olduğundan emin olmadığım için bu alanı boş bıraktım, bu yüzden her kullanışımda bir kişinin söz konusu parola ile kilidini açmayı gerektireceğini varsaydım.

Yukarıda bağlantılı talimatlara devam ederek, aşağıdakileri çalıştırdım ve aldım:

ssh-copy-id user@IP
ERROR: No identities found

Hızlı bir arama, varsayılan kaydetme konumunda olmadığı için anahtarın konumunu belirtmek için gerekli olduğunu ortaya koydu, bu yüzden bunu düzelttim:

ssh-copy-id -i /home/user/ssh/keys/server1key.pub user@192.168.1.3

Sunucunun şifresini sorduktan sonra anahtarı başarıyla ekledi. Ancak, "ssh user @ IP" ile giriş yapmayı denediğimde hala parola girmem istendi.

Bildiğim kadarıyla, bağlantılı talimatları doğru bir şekilde izledim, ya bir şey eksik ya da belki de mevcut bir yapılandırma bunu işe almamı engelliyor?

Her iki sistem de 18.04 ve openssh kullanır.


SSH komutunu gönderirken .pub dosyasının konumunu belirtmem gerekiyor mu?
hiigaran

Dosyalarımı organize etmek için biraz farklı bir yolum var, bu nedenle varsayılan olmayan konumlar, ancak sizler çok yardımcı oldunuz. Teşekkürler. Kabul edebileceğim bir cevap yapmaktan çekinmeyin.
hiigaran

Yanıtlar:


35

ssh-copy-idİlk kez başarısız olan aynı nedenden dolayı başarısız olur - yani kimlik dosyası için varsayılan olmayan bir konum seçtiğiniz için.

Sen ekleyerek, aynı şekilde çözebilir -i /home/user/ssh/keys/server1keysizin için sshistemci tarafı yerini gerektiğini not - komutla özel anahtar dosyası.

itibaren man ssh

 -i identity_file
         Selects a file from which the identity (private key) for public
         key authentication is read.  The default is ~/.ssh/identity for
         protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa,
         ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.

Alternatif olarak, ~/.ssh/configana makine için satırında bir dosya girişi oluşturmak isteyebilirsiniz .

Host            somename
Hostname        192.168.1.3
User            user
IdentityFile    /home/user/ssh/keys/server1key

1
Her zaman config dosyasının girintiyi gerektirdiğini varsaydım - görüyorum ki durum böyle değil. İntruiging.
Örümcek Boris

OpenSSH kullanan herkesin a olması gerekir ~/.ssh/config, aksi takdirde OpenSSH sistem genelindeki varsayılanı kullanır /etc/ssh/ssh_config. Herkesin yararlı bulması durumunda , ssh_config man sayfasını okumak için vakti olmayan kullanıcılar için bir süre önce GitHub'ım için önceden oluşturulmuş bir ssh_config yükledim
JW0914 7:18

@ JW0914 bu sadece yarısı doğru: tek tek değerler ~/.ssh/configgenel değerleri geçersiz kılar ssh_config, ancak sadece dosyaya sahip olmak sistem genelindeki yapılandırmayı devre dışı bırakmaz.
Sebastian Stark

@SebastianStark Belki de yorumumu yanlış okudunuz, çünkü daha önce belirtmediğim gibi, sistem genelindeki yapılandırmayı devre dışı bırakacaktır. Belirttiğim şey% 100 doğruydu.
JW0914

2

ssh-copy-idBaşarısız olmanın bir başka nedeni , anahtarın SSH aracısına eklenmemiş olmasıdır.

İlk olarak, ssh-agentçalışıp çalışmadığını kontrol edin ve başlatın :

eval "$(ssh-agent -s)"

İşlem kimliğine girerseniz, anahtarınızı ekleyebilirsiniz:

ssh-add -k /home/user/ssh/keys/server1key

İle -ksize anahtarlığa anahtarı ekleyin.

Anahtarların eklenip eklenmediğini kontrol edin:

ssh-add -l

ssh-copy-id şimdi çalışıyor olmalı.


-1

Umarım bu sizin için çalışır .. "sshpass -p yourpassword" otomatik olarak uzak ana bilgisayara giriş yapacaktır.

[root @ localhost .ssh] # sshpass -p password123 ssh -l kök localhost


-1

Sadece 2 komut çalıştırın:

ssh-keygen
ssh-copy-id

Uzun cevap:

user@ip:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): temp_file
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in stemp.
Your public key has been saved in stemp.pub.
The key fingerprint is:
SHA256:5**M user@ip
The key's randomart image is:
+---[RSA 2048]----+
|  ...            |
| ...             |
| ..              |
| ..+.    o .     |
|                 |
|    B            |
|                 |
|=      *         |
|=+   o .         |
+----[SHA256]-----+

Ve sonra:

user@ip:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ipDestination -p portDest
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.