SSH tanpa kata sandi dengan lokasi file identitas non-standar


16

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

ssh user@192.168.1.3

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

Yang ingin saya lakukan adalah agar skrip saya memulai perintah dan menyelesaikan koneksi. Sejauh itu, saya berusaha mengikuti instruksi seperti yang dijabarkan dalam jawaban yang diterima di sini .

Dari sistem yang saya ingin hubungkan, saya berlari:

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

Kemudian saya diminta untuk memasukkan kata sandi. Saya meninggalkan ini kosong, karena saya tidak yakin untuk apa itu, jadi saya berasumsi pengaturan satu akan memerlukan membuka dengan kata kunci setiap kali saya menggunakannya.

Melanjutkan dengan petunjuk yang tertaut 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 itu tidak ada 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 dimintai kata sandi.

Sejauh yang saya ketahui, saya mengikuti petunjuk yang ditautkan dengan benar, jadi entah saya kehilangan sesuatu, atau mungkin konfigurasi yang ada menghalangi saya untuk membuat ini berfungsi?

Kedua sistem menggunakan 18.04 dan openssh.


Jadi saya perlu menentukan lokasi file .pub saat mengirim perintah SSH?
hiigaran

Saya punya sedikit cara berbeda dalam mengatur file saya, karena itu lokasi non-default, tetapi kalian telah banyak membantu. Terima kasih. Jangan ragu untuk menjadikannya jawaban yang bisa saya terima.
hiigaran

Jawaban:


35

Itu gagal karena 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 perintah -i /home/user/ssh/keys/server1keyAnda ssh- perhatikan bahwa sisi klien membutuhkan lokasi file kunci pribadi .

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/configentri file untuk host di sepanjang baris

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

1
Saya selalu berasumsi bahwa file konfigurasi memerlukan lekukan - Saya melihat itu tidak terjadi. Intruiging.
Boris the Spider

Siapa pun yang menggunakan OpenSSH harus memiliki ~/.ssh/config, jika tidak OpenSSH menggunakan sistem lebar standar /etc/ssh/ssh_config. Jika ada yang merasa terbantu, saya mengunggah ssh_config yang sudah 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 setengah benar: nilai-nilai individual di ~/.ssh/configakan menimpa nilai 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 itu akan menonaktifkan konfigurasi sistem yang luas. Apa yang saya nyatakan 100% akurat secara faktual.
JW0914

2

Alasan lain itu ssh-copy-id gagal adalah bahwa kunci belum ditambahkan ke agen SSH.

Pertama, periksa dan mulai jika ssh-agentsedang 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 dengan:

ssh-add -l

ssh-copy-id harus bekerja sekarang.


-1

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.