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?

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


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 "root@192.168.0.100 -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.


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


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

6

Ini bekerja (dari sini ):

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

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.


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'

0

Dengan MacOS saya, ini berhasil.

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

0

Saya menggunakan perintah ini:

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

Contoh:

ssh-copy-id ssh://root@1.2.3.4:23

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.