Действительно ли возможно выполнить ssh-copy-id на порте кроме 22?

Если Вы хотите управление с более прекрасными зернами, чем хорошие заклинания удара maxschlepzig, это - довольно легкая вещь просто кодировать:

#include 
#include 
#include 
#include 

int main(int argc, char**argv){
  useconds_t mdelay=0, delay;
  if (argc<3){
    fprintf(stderr,"%s   * :\n\trun commands with a random delay\n",argv[0]);
    exit(1);
  }
  mdelay=atol(argv[1]);
  /* seed random number generator with the time */
  srand(((unsigned int)time(NULL))%RAND_MAX); 
  delay = mdelay * (rand() / (1.0 + RAND_MAX));
  usleep(delay*1000);
  execvP(argv[2],getenv("PATH"),argv+2);

  return 0;
}

Скомпилируйте с чем-то как gcc randomdelay.c -o randomdelay и вызовите его как

$ randomdelay 10000 echo Hi!

Если Вы делаете, это - контекст программирования, Вы могли бы быть более обеспечены просто захват части кода, который выбирает случайную задержку Вас и звонит exec функция семейства (то, какой Вы хотите, зависит от точно, как у Вас есть указанный внутренне).

Выйдите здесь:

  • Это принимает Ваши системы rand/srand нормальны (не хороший PRNGs, обратите внимание, просто, что они делают то, что в странице справочника говорится, что они делают). Я испытывал некоторые затруднения из-за него на моем поле Mac OS X, где те функции удерживаются от использования в пользу random/srandom.
  • Исторически, многие реализация rand имели плохие числовые характеристики. Это не должно быть проблемой в этом приложении, но если это, замените его лучшим PRNG.
  • Обработка параметра командной строки в этой игрушке немного примитивна.
  • Задержка выбрана однородно из некоторого диапазона. Для некоторых приложений Вы могли бы предпочесть неограниченное распределение как экспоненциал. Переполнение стека имеет много вопросов о том, как получить неоднородные дистрибутивы от универсального PRNGs.

100
19.01.2012, 02:16
10 ответов
$ ssh-copy-id "-p 8129 user@host"

Источник: http://it-ride.blogspot.com/2009/11/use-ssh-copy-id-on-different-port.html

Примечание: Порт должен быть перед user@host, или он не решит

114
27.01.2020, 19:30
  • 1
    Это действительно глупо, это ssh имеет синтаксис ssh -p 1234 user@host, ssh-copy-id "-p 1234 user@host" и наконец scp -P 1234 user@host. Было бы настолько хорошо иметь тот же синтаксис. –  Tombart 04.02.2015, 14:58
  • 2
    @Tombart и затем rsync имеет rsync -e "ssh -p 1234" user@host. Я клянусь, что это - больше стычки, чем стоит использовать пользовательский порт. –  garetmckinley 25.09.2015, 07:10
  • 3
    @Colt объясняет, что это улучшено в новых версиях, и этот специфический синтаксис больше не требуется. –  meshy 08.01.2016, 13:46
  • 4
    К вашему сведению полная команда требует IP, введенного дважды, и должна посмотреть что-то как: ssh-copy-id "root@192.168.0.100 -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100 –  degenerate 02.12.2017, 04:40

Беглый взгляд на источник указывает на это ssh-copy-id кажется, не имеет никакой функции, которая разрешает это. Однако Вы могли сделать что-то как следующее вместо этого:

ssh -p8129 user@host 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_*.pub
11
27.01.2020, 19:30

ssh-copy-id не берет аргументов, что это могло передать к базовому ssh команда, но можно настроить псевдоним в ~/.ssh/config.

Host myhost
HostName hostname
Port 8129

Затем выполненный ssh-copy-id myhost.

46
27.01.2020, 19:30
  • 1
    Это также обладает преимуществом устранения необходимости -p флаг на постоянном клиенте ssh попытки. Это - поэтому не только правильный ответ на этот вопрос, это - Правильная Вещь, период. –  Warren Young 20.01.2012, 16:00
  • 2
    спасибо за это. 2-я строка "Имя хоста HostName" не необходима, если Вы удовлетворены естественным именем хоста хоста. –  Lonniebiz 09.08.2016, 18:53

Я всегда использовал scp скопировать его:

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

Хотя я должен сказать, я буду, вероятно, использовать другие (one-line/connection) методы, если я буду помнить их в будущем. Но это - другая опция для Вас.

5
27.01.2020, 19:30

Это работает (отсюда):

ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 221 username@host'
7
27.01.2020, 19:30

Начиная с openssh-клиента_6.2 для команды, разрешающей этот синтаксис, теперь имеется специальный флаг порта:

ssh-copy-id -p 8129 user@example

Он также добавил поддержку добавления других опций ssh с флагом -o.

Вот man-страница Ubuntu для соответствующей версии, представленная в 13.04: http://manpages.ubuntu.com/manpages/saucy/man1/ssh-copy-id.1.html

18
27.01.2020, 19:30

С моей macOS это сработало.

ssh-copy-id -i ~/.ssh/id_rsa.pub -p <port> user@host
0
27.01.2020, 19:30

En CentOS7 es solo:

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

Tenga cuidado de no colocar usuario@host entre comillas o obtendrá el siguiente error en esta distribución:

/usr/bin/ssh-copy-id: ERROR: Bad port ' 1234 user@host'
3
27.01.2020, 19:30

Я использую эту команду:

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

Пример:

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

0
27.01.2020, 19:30

Есть четыре способа добиться этого:

1. Используя ssh -скопируйте -id

ssh-copy-id -p <port> <user>@<remote-host>

1.1 В CentOS

ssh-copy-id "<user>@<remote-host> -p <port>"

2. Использование SSH

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

3. Использование SCP

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

4. Использование файла ~/.ssh/config

## Host <alias>
##   Hostname <remote-host>
##   Port <port>
##   User <user>
ssh-copy-id <alias>
0
24.11.2021, 09:10

Теги

Похожие вопросы