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.