Có thể chạy ssh-copy-id trên cổng khác ngoài 22 không?


99

Tôi có một máy chủ với SSH chạy trên một cổng không chuẩn. Thay vì 22, nó chạy vào 8129. Để đăng nhập, tôi sử dụng:

ssh -p 8129 hostname

Bây giờ, bất cứ khi nào tôi cần thiết lập khóa để đăng nhập không cần mật khẩu, tôi phải sao chép khóa chung và thêm nó vào ủy quyền. Tôi phát hiện ra rằng lệnh ssh-copy-idcó thể được sử dụng để đơn giản hóa quá trình này, nhưng có vẻ như nó không có tùy chọn để chỉ định cổng của máy chủ ssh.

Có cách nào để nói ssh-copy-idsử dụng cổng 8129 không, hay tôi chỉ nên quên lệnh này và sao chép / dán thủ công như trước?

Câu trả lời:


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

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

LƯU Ý: Cổng phải ở phía trước của người dùng @ host nếu không nó sẽ không giải quyết


11
Nó thực sự ngu ngốc, sshcó cú pháp ssh -p 1234 user@host, ssh-copy-id "-p 1234 user@host"và cuối cùng scp -P 1234 user@host. Nó sẽ rất tốt để có cùng cú pháp.
Tombart

2
@Tombart rồi rsync có rsync -e "ssh -p 1234" user@host. Tôi thề rằng nó rắc rối hơn việc sử dụng một cổng tùy chỉnh.
garetmckinley

1
Câu trả lời của @Colt McCormack giải thích điều này được cải thiện trong các phiên bản mới và cú pháp đặc biệt này không còn cần thiết nữa.
lưới

1
FYI lệnh đầy đủ yêu cầu IP được gõ hai lần và sẽ trông giống như:ssh-copy-id "root@192.168.0.100 -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100
suy biến

1
Trên macOS (Tôi đang ở High Sierra), không cần phải trích dẫn. I E. ssh-copy-id -p 8129 user@hostlàm.
Arjun Mehta

46

ssh-copy-idkhông lấy bất kỳ đối số nào mà nó có thể chuyển xuống sshlệnh bên dưới , nhưng bạn có thể định cấu hình bí danh ~/.ssh/config.

Host myhost
HostName hostname
Port 8129

Sau đó chạy ssh-copy-id myhost.


3
Điều này cũng có lợi ích trong việc loại bỏ sự cần thiết của -pcờ trên các sshnỗ lực thường xuyên . Do đó, nó không chỉ là câu trả lời đúng cho câu hỏi này, đó là Điều đúng, giai đoạn.
Warren Young

Cảm ơn vì điều đó. Dòng thứ hai "Tên máy chủ lưu trữ" không cần thiết nếu bạn hài lòng với tên máy chủ tự nhiên của máy chủ.
Lonniebiz

17

Kể từ openssh-client_6.2, giờ đây đã có một cờ cổng chuyên dụng cho lệnh cho phép cú pháp này:

ssh-copy-id -p 8129 user@example

Nó cũng thêm hỗ trợ để thêm các tùy chọn ssh khác với cờ -o.

Đây là trang hướng dẫn của Ubuntu cho phiên bản phù hợp, được giới thiệu vào ngày 13.04: http://manpages.ubfox.com/manpages/saucy/man1/ssh-copy-id.1.html


3
Đây là phương pháp duy nhất làm việc cho.
Luca Steeb

11

Nhìn nhanh vào nguồn cho thấy ssh-copy-iddường như không có chức năng nào cho phép điều này. Tuy nhiên, thay vào đó, bạn có thể làm một cái gì đó như sau:

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

6

Điều này hoạt động (từ đây ):

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

5

Tôi đã luôn luôn sử dụng scpđể sao chép nó qua:

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

Mặc dù tôi phải nói, có lẽ tôi sẽ sử dụng các phương thức khác (một dòng / kết nối) nếu tôi nhớ chúng trong tương lai. Nhưng đây là một lựa chọn khác cho bạn.


2

Trên CentOS7 chỉ là:

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

Vui lòng lưu ý không đặt user @ host trong dấu ngoặc kép hoặc bạn sẽ gặp lỗi sau trong bản phân phối này:

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

0

Với macOS của tôi, điều này đã làm việc.

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

0

Tôi sử dụng lệnh này:

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

Thí dụ:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.