Inilah yang saya coba, dan saya mendapat kesalahan:
$ cat /home/tim/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Password:
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory
Inilah yang saya coba, dan saya mendapat kesalahan:
$ cat /home/tim/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Password:
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory
Jawaban:
OpenSSH datang dengan perintah untuk melakukan ini
ssh-copy-id
,. Anda cukup memberinya alamat jarak jauh dan menambahkan kunci publik Anda keauthorized_keys
file di mesin jarak jauh:Anda mungkin perlu menggunakan
-i
bendera untuk menemukan kunci publik di mesin lokal Anda:sumber
>>
ditangani oleh shell Anda, dan Anda menjalankan perintah melalui SSH bukannya melalui shell. Cara memperbaiki SSH menjalankan shell, yang kemudian menjalankan perintah Anda, akan berhasilssh-copy-id
tidak akan berhasil, bukan?Anda selalu dapat melakukan sesuatu seperti ini:
Saya tidak yakin apakah Anda dapat
cat
dari mesin lokal ke sesi ssh. Pindahkan saja ke / tmp seperti yang disarankan.Sunting: Ini persis seperti apa
ssh-copy-id
. Seperti yang dikatakan Michael.sumber
cat
atau sebaliknya). Apa yang Anda gambarkan adalah cara kuno;ssh-copy-id
direkomendasikan karena ada sedikit risiko kesalahan pengetikan atau memberikan file izin yang salah.cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
.Jawaban ini menjelaskan cara membuat cara yang dimaksudkan ditampilkan dalam pertanyaan bekerja.
Anda dapat mengeksekusi shell pada komputer jarak jauh untuk menafsirkan makna khusus dari
>>
operator pengalihan:Operator pengalihan
>>
biasanya ditafsirkan oleh shell.Ketika Anda mengeksekusi
ssh host 'command >> file'
maka itu tidak dijamin yangcommand >> file
akan ditafsirkan oleh shell. Dalam kasus Andacommand >> file
dieksekusi bukannya shell tanpa interpretasi khusus dan>>
diberikan kepada perintah sebagai argumen - cara yang sama seperti menjalankancommand '>>' file
shell.Beberapa versi SSH (OpenSSH_5.9) akan secara otomatis memanggil shell pada server jarak jauh dan meneruskan perintahnya ketika mereka mendeteksi token yang akan ditafsirkan oleh shell seperti
;
>
>>
dll.sumber
openssh
memang menyediakanssh-copy-id
. Urutannya adalah:Hasilkan kunci 4k yang layak
Mulai ssh-agent Anda dan hisap informasi seperti
SSH_AGENT_PID
, dll.Sekarang mulai memuat kunci ke Agen SSH Anda
Periksa apakah sudah dimuat
Ini akan menunjukkan kepada Anda apa yang Anda miliki di ssh-agent
Sekarang sebenarnya SSH ke sistem jarak jauh
Sekarang Anda dapat menjalankan ssh-copy-id tanpa argumen:
Ini membuat
~/.ssh/authorized_keys
dan mengisi info dasar yang diperlukan dari ssh-agent.sumber
Saya memiliki masalah dengan ssh-copy-id ketika memilih port lain dari 22 ... jadi inilah oneliner saya dengan ssh-port yang berbeda (mis. 7572):
sumber
Memang para
the ssh-copy-id
perintah tidak tepat ini (dariopenssh-client
paket):Catatan:
host
berarti alamat IP atau domain .Saya juga ingin menambahkan beberapa informasi tambahan untuk ini
1) Kami dapat menentukan port lain untuk SSH di server tujuan:
Catatan:
The pelabuhan harus di depan
user@host
atau tidak akan menyelesaikan.Sumber
2) Kami dapat menentukan file dengan kunci publik :
Catatan:
The
-i
pilihan memungkinkan kita untuk menunjukkan lokasi yang tepat dari nama dengan file yang berisi kunci publik.Kadang-kadang bisa berguna, terutama jika kita menyimpannya di lokasi yang tidak standar atau kita memiliki lebih dari satu kunci publik di komputer kita dan kita ingin menunjuk ke yang tertentu.
sumber