Inilah yang saya coba, dan saya mendapat kesalahan:
$ cat /home/tim/.ssh/id_rsa.pub | ssh tim@just.some.other.server '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 tim@just.some.other.server '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 ke authorized_keys
file di mesin jarak jauh:
$ ssh-copy-id tim@just.some.other.server
Anda mungkin perlu menggunakan -i
bendera untuk menemukan kunci publik di mesin lokal Anda:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub tim@just.some.other.server
>>
ditangani oleh shell Anda, dan Anda menjalankan perintah melalui SSH bukannya melalui shell. Cara memperbaiki SSH menjalankan shell, yang kemudian menjalankan perintah Anda, akan berhasil
ssh-copy-id
tidak akan berhasil, bukan?
Anda selalu dapat melakukan sesuatu seperti ini:
scp ~/.ssh/id_rsa.pub user@remote.example.com:/tmp/id_rsa.pub
ssh user@remote.example.com
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
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.
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:
ssh tim@just.some.other.server sh -c "'cat >> .ssh/authorized_keys'" < /home/tim/.ssh/id_rsa.pub
Operator pengalihan >>
biasanya ditafsirkan oleh shell.
Ketika Anda mengeksekusi ssh host 'command >> file'
maka itu tidak dijamin yang command >> file
akan ditafsirkan oleh shell. Dalam kasus Anda command >> file
dieksekusi bukannya shell tanpa interpretasi khusus dan >>
diberikan kepada perintah sebagai argumen - cara yang sama seperti menjalankan command '>>' 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.
openssh
memang menyediakan ssh-copy-id
. Urutannya adalah:
Hasilkan kunci 4k yang layak
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa4k
Mulai ssh-agent Anda dan hisap informasi seperti SSH_AGENT_PID
, dll.
ssh-agent -s > ~/mysshagent
source ~/mysshagent
rm ~/mysshagent
Sekarang mulai memuat kunci ke Agen SSH Anda
ssh-add ~/.ssh/id_rsa4k
Periksa apakah sudah dimuat
ssh-add -l
ssh-add -L
Ini akan menunjukkan kepada Anda apa yang Anda miliki di ssh-agent
Sekarang sebenarnya SSH ke sistem jarak jauh
ssh username@remotehost.network
Sekarang Anda dapat menjalankan ssh-copy-id tanpa argumen:
ssh-copy-id
Ini membuat ~/.ssh/authorized_keys
dan mengisi info dasar yang diperlukan dari ssh-agent.
Saya memiliki masalah dengan ssh-copy-id ketika memilih port lain dari 22 ... jadi inilah oneliner saya dengan ssh-port yang berbeda (mis. 7572):
ssh yourServer.dom -p7572 "mkdir .ssh; chmod 700 .ssh; umask 177; sh -c 'cat >> .ssh/authorized_keys'" < .ssh/id_rsa.pub
Memang para the ssh-copy-id
perintah tidak tepat ini (dari openssh-client
paket):
ssh-copy-id user@host
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:
ssh-copy-id "-p 8127 user@host"
Catatan:
The pelabuhan harus di depan user@host
atau tidak akan menyelesaikan.
2) Kami dapat menentukan file dengan kunci publik :
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
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.