Pertanyaan SSH tanpa kata sandi dengan lokasi file identitas non-default


Sebagai bagian dari skrip startup saya harus secara otomatis membuka beberapa jendela gnome-terminal, salah satu terminal itu secara otomatis mengirim:

ssh user@192.168.1.3

Keterbatasan dengan ini adalah bahwa saya masih perlu mengetikkan kata sandi untuk menyelesaikan koneksi SSH.

Yang ingin saya lakukan adalah skrip saya untuk memulai perintah dan menyelesaikan koneksi. Sampai sejauh itu, saya berusaha untuk mengikuti instruksi sebagaimana diuraikan dalam jawaban yang diterima sini.

Dari sistem yang ingin saya hubungi, saya berlari:

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

Itu kemudian mendorong saya untuk memasukkan kata sandi. Saya meninggalkan ini kosong, karena saya tidak yakin apa yang akan terjadi, jadi saya berasumsi pengaturan satu akan membutuhkan membuka kunci dengan kata sandi kata setiap kali saya akan menggunakannya.

Melanjutkan instruksi yang dikaitkan di atas, saya kemudian berlari dan menerima yang berikut:

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

Pencarian cepat mengungkapkan bahwa saya perlu menentukan lokasi kunci, karena tidak berada di lokasi penyimpanan default, jadi saya memperbaikinya:

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

Setelah menanyakan kata sandi server, itu berhasil menambahkan kunci. Namun, setelah mencoba masuk dengan "ssh user @ IP", saya masih diminta untuk memasukkan kata sandi.

Sejauh yang saya ketahui, saya mengikuti instruksi yang terhubung dengan benar, jadi apakah saya kehilangan sesuatu, atau mungkin konfigurasi yang ada mencegah saya untuk membuatnya bekerja?

Kedua sistem menggunakan 18.04 dan openssh.


14
2017-08-07 18:04


asal


Jadi saya perlu menentukan lokasi file .pub saat mengirim perintah SSH? - hiigaran
Saya memiliki sedikit cara berbeda dalam mengatur file saya, maka lokasi non-default, tetapi kalian telah sangat membantu. Terima kasih. Jangan ragu untuk menjadikannya sebagai jawaban yang dapat saya terima. - hiigaran


Jawaban:


Gagal untuk alasan yang sama itu ssh-copy-id gagal pertama kali - yaitu karena Anda telah memilih lokasi non-default untuk file identitas.

Anda dapat mengatasinya dengan cara yang sama, dengan menambahkan -i /home/user/ssh/keys/server1key untuk Anda ssh perintah - perhatikan bahwa sisi klien membutuhkan lokasi pribadi file kunci.

Dari 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.

Atau, Anda mungkin ingin membuat ~/.ssh/config entri file untuk host di sepanjang baris

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

33
2017-08-07 18:24



Saya selalu berasumsi bahwa file konfigurasi membutuhkan indentasi - saya melihat itu tidak terjadi. Intruiging. - Boris the Spider
Siapa pun yang menggunakan OpenSSH harus memiliki ~/.ssh/config, jika tidak OpenSSH menggunakan default sistem yang luas /etc/ssh/ssh_config. Jika ada yang menganggapnya bermanfaat, saya mengunggah ssh_config yang dibuat sebelumnya ke GitHub saya beberapa waktu lalu sebagai titik awal bagi pengguna yang mungkin tidak punya waktu untuk membaca halaman manual ssh_config - JW0914
@ JW0914 itu hanya separuh benar: nilai individual dalam ~/.ssh/config akan mengesampingkan yang global ssh_config, tetapi hanya memiliki file tidak akan menonaktifkan konfigurasi sistem yang luas. - Sebastian Stark
@SebastianStark Mungkin Anda salah membaca komentar saya, karena saya tidak pernah menyatakan akan menonaktifkan konfigurasi lebar sistem. Apa yang saya nyatakan 100% akurat secara faktual. - JW0914


Alasan lain yang ssh-copy-id gagal, adalah karena kunci tidak ditambahkan ke agen ssh.

Pertama periksa dan mulai jika ssh-agemt sedang berjalan

$ eval "$(ssh-agent -s)"

Jika Anda mendapatkan ID proses, Anda dapat menambahkan kunci Anda

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

Dengan -k Anda menambahkan kunci ke gantungan kunci

Periksa apakah kunci ditambahkan

$ ssh-add -l

Ssh-copy-id harus berfungsi sekarang.


2
2017-08-07 22:40





Semoga ini akan bekerja untuk Anda .. "sshpass -p yourpassword" secara otomatis akan masuk ke host jarak jauh.

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


-1
2017-08-13 22:39





Cukup jalankan 2 perintah:

ssh-keygen
ssh-copy-id

Jawaban panjang:

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]-----+

Lalu:

user@ip:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ipDestination -p portDest

-1
2017-08-16 07:25