Apakah mungkin menjalankan ssh-copy-id di port selain 22?

99

Saya memiliki server dengan SSH yang berjalan pada port non-standar. Alih-alih 22, ini berjalan pada 8129. Untuk masuk, saya menggunakan:

ssh -p 8129 hostname

Sekarang, setiap kali saya perlu mengatur kunci untuk login tanpa kata sandi, saya harus menyalin kunci publik dan menambahkannya ke otor_keys secara manual. Saya menemukan bahwa perintah ssh-copy-idtersebut dapat digunakan untuk menyederhanakan proses ini, tetapi sepertinya tidak memiliki opsi untuk menentukan port dari server ssh.

Apakah ada cara untuk mengatakan ssh-copy-iduntuk menggunakan port 8129, atau haruskah saya melupakan perintah ini dan menyalin / menempel secara manual seperti sebelumnya?

Milan Babuškov
sumber

Jawaban:

112
$ ssh-copy-id "-p 8129 user@host"

Sumber: http://it-ride.blogspot.com/2009/11/use-ssh-copy-id-on-different-port.html

CATATAN: Port harus di depan user @ host atau tidak akan menyelesaikan

Jsan
sumber
11
Benar-benar bodoh, sshmemiliki sintaksis ssh -p 1234 user@host, ssh-copy-id "-p 1234 user@host"dan akhirnya scp -P 1234 user@host. Akan sangat menyenangkan memiliki sintaks yang sama.
Tombart
2
@ Combart dan kemudian rsync memiliki rsync -e "ssh -p 1234" user@host. Saya bersumpah ini lebih merepotkan daripada layak menggunakan port khusus.
garetmckinley
1
@Colt McCormack menjelaskan ini diperbaiki dalam versi baru, dan sintaks aneh ini tidak lagi diperlukan.
menyenangkan
1
FYI perintah lengkap membutuhkan IP yang diketik dua kali, dan akan terlihat seperti:ssh-copy-id "[email protected] -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100
degenerate
1
Di macOS (saya di Sierra Tinggi) tanda kutip tidak diperlukan. yaitu. ssh-copy-id -p 8129 user@hostbekerja.
Arjun Mehta
46

ssh-copy-idtidak mengambil argumen yang bisa diturunkan ke sshperintah yang mendasarinya , tetapi Anda bisa mengonfigurasi alias di ~/.ssh/config.

Host myhost
HostName hostname
Port 8129

Kemudian jalankan ssh-copy-id myhost.

Gilles
sumber
3
Ini juga memiliki manfaat menghilangkan kebutuhan -pbendera pada sshupaya reguler . Karena itu, ini bukan hanya jawaban yang tepat untuk pertanyaan ini, tetapi juga The Right Thing, titik.
Warren Young
Terima kasih untuk ini. Baris kedua "HostName hostname" tidak diperlukan jika Anda puas dengan hostname alami tuan rumah.
Lonniebiz
17

Pada openssh-client_6.2 sekarang ada flag port khusus untuk perintah yang memungkinkan sintaks ini:

ssh-copy-id -p 8129 user@example

Itu juga menambahkan dukungan untuk menambahkan opsi ssh lainnya dengan flag -o.

Inilah halaman manual Ubuntu untuk versi yang sesuai, diperkenalkan pada 13.04: http://manpages.ubuntu.com/manpages/saucy/man1/ssh-copy-id.1.html

Colt McCormack
sumber
3
Ini adalah satu-satunya metode yang berfungsi untuk.
Luca Steeb
11

Melihat sekilas pada sumber menunjukkan bahwa ssh-copy-idtampaknya tidak memiliki fungsi yang memungkinkan ini. Namun, Anda dapat melakukan sesuatu seperti yang berikut:

ssh -p8129 user@host 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_*.pub
Chris Down
sumber
6

Ini bekerja (dari sini ):

ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 221 username@host'
DJR
sumber
5

Saya selalu scpmenyalinnya:

scp -P 8129 ~/.ssh/id_*.pub user@host:
ssh -p 8129 user@host 'cat id_*.pub >> ~/.ssh/authorized_keys'

Meskipun saya harus mengatakan, saya mungkin akan menggunakan metode (satu-line / koneksi) lainnya jika saya mengingatnya di masa depan. Tapi ini pilihan lain untukmu.

Kevin
sumber
2

Di CentOS7 hanya:

 ssh-copy-id "-p 1234" user@host

Harap berhati-hati untuk tidak menempatkan user @ host dalam tanda kutip atau Anda akan mendapatkan kesalahan berikut dalam distribusi ini:

/usr/bin/ssh-copy-id: ERROR: Bad port ' 1234 user@host'
Max Cuttins
sumber
0

Dengan MacOS saya, ini berhasil.

ssh-copy-id -i ~/.ssh/id_rsa.pub -p <port> user@host
Jin Kwon
sumber
0

Saya menggunakan perintah ini:

ssh-copy-id ssh://user@ip_addr:port

Contoh:

ssh-copy-id ssh://[email protected]:23

Carlos
sumber