Чи можливо запустити ssh-copy-id на інший порт, ніж 22?


99

У мене є сервер з SSH, який працює на нестандартному порту. Замість 22 він працює на 8129. Для входу я використовую:

ssh -p 8129 hostname

Тепер, коли мені потрібно встановити ключ для входу без пароля, мені доведеться скопіювати відкритий ключ і додати його до санкціонованих_кеїв вручну. Я виявив, що команда ssh-copy-idможе бути використана для спрощення цього процесу, але, схоже, у неї немає можливості вказати порт ssh-сервера.

Чи є якийсь спосіб сказати ssh-copy-idвикористовувати порт 8129, або я просто забуду про цю команду та скопіюйте / вставте вручну, як раніше?

Відповіді:


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

Джерело: http://it-ride.blogspot.com/2009/11/use-ssh-copy-id-on-different-port.html

ПРИМІТКА: Порт повинен бути перед користувачем @ хостом, інакше він не вирішиться


11
Це справді нерозумно, у якого sshє синтаксис ssh -p 1234 user@host, ssh-copy-id "-p 1234 user@host"і нарешті scp -P 1234 user@host. Було б так приємно мати однаковий синтаксис.
Tombart

2
@Tombart, а потім rsync має rsync -e "ssh -p 1234" user@host. Я клянусь, це більше клопоту, ніж варто використовувати користувацький порт.
garetmckinley

1
Відповідь @Colt McCormack пояснює, що в нових версіях це вдосконалено, і цей своєрідний синтаксис більше не потрібен.
meshy

1
FYI повна команда вимагає IP-адреси, введеної вдвічі, і має виглядати приблизно так:ssh-copy-id "root@192.168.0.100 -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100
виродження

1
У macOS (я на Високій Сьєррі) котирування не потрібні. тобто. ssh-copy-id -p 8129 user@hostпрацює.
Арджун Мехта

46

ssh-copy-idне приймає жодних аргументів, що це може перейти до основної sshкоманди, але ви можете налаштувати псевдонім в ~/.ssh/config.

Host myhost
HostName hostname
Port 8129

Потім бігайте ssh-copy-id myhost.


3
Це також має перевагу у тому, що потрібно -pрегулярно sshнамагатися усунути прапор . Тому це не лише правильна відповідь на це питання, це правильна річ, період.
Воррен Янг

Дякую за це 2-й рядок "Ім'я хоста HostName" не потрібен, якщо ви задоволені природним іменем хоста.
Lonniebiz

17

Станом на openssh-client_6.2 тепер існує спеціальний прапор порту для команди, що забезпечує цей синтаксис:

ssh-copy-id -p 8129 user@example

Він також додав підтримку для додавання інших ssh-опцій із прапором -o.

Ось головна сторінка Ubuntu для відповідної версії, представлена ​​13.04: http://manpages.ubuntu.com/manpages/saucy/man1/ssh-copy-id.1.html


3
Це єдиний метод, який працював на.
Лука Стіб

11

Швидкий погляд на джерело вказує на те, що, ssh-copy-idздається, немає функції, яка це дозволяє. Однак ви можете зробити щось на зразок наступного:

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


5

Я завжди використовував його scpдля копіювання:

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

Хоча я мушу сказати, я, мабуть, буду використовувати інші (однолінійні / підключення) методи, якщо буду пам'ятати їх у майбутньому. Але це ще один варіант для вас.


2

На CentOS7 просто:

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

Будь ласка, подбайте про те, щоб не розміщувати користувача @ хост у котируваннях, або ви отримаєте таку помилку в цьому розповсюдженні:

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


0

Я використовую цю команду:

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

Приклад:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.