Как использовать ssh-copy-id на нестандартном порту

Я бы хотел использовать аутентификацию на основе ключа для входа на один из моих компьютеров. У него sshd работает на порту, который не является значением по умолчанию 22. Я хочу использовать ssh-copy-id для добавления моего ключа в список авторизованных ключей. Я попытался указать порт с использованием -p , как и для самой команды ssh. Однако я получаю действительно странные сообщения об ошибках.

Например

  • SSH-соединение под UDP?
  • Как преобразовать ключ .ppk в ключ OpenSSH под Linux?
  • SSH запрашивает пароль, даже если установлен открытый ключ
  • Linux SOCKS5 туннелирование не работает с udp-трафиком
  • SSH не читает файлы rc
  • Как использовать SSH для копирования файла на удаленный сервер под другим пользователем
  •  user@box:~$ ssh-copy-id -p 57777 -i ~/.ssh/id_rsa.pub user@192.168.1.111 Bad port 'umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys' user@box:~$ ssh-copy-id '-p 57777' -i ~/.ssh/id_rsa.pub user@192.168.1.111 Pseudo-terminal will not be allocated because stdin is not a terminal. ssh: Could not resolve hostname umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys: Name or service not known 

    Как я могу заставить его работать? (Я знаю, что могу вручную добавить ключ к файлу authorized_keys на сервере. Но мне лениво и определенно интересно, как убедить ssh-copy-id выполнять свою работу :))

  • Как вы можете избежать просьбы ввести пароль BitBucket при нажатии на вики-версию BitBucket?
  • Как я могу запустить программу удаленно через SSH, но показывать локально
  • Как использовать gpg и SSH вместе?
  • Как загрузить локальный файл на сервер через терминал Linux
  • Как туннелировать локальный порт на удаленном сервере
  • Где мои личные / общедоступные ключи SSH в UNIX?
  • 2 Solutions collect form web for “Как использовать ssh-copy-id на нестандартном порту”

    Цитата уже была хорошей идеей, но, скорее, так:

     ssh-copy-id -i /home/user/.ssh/id_rsa.pub '-p 57777 user@192.168.1.111' 

    Поместите все, что вы хотите сообщить команде ssh, которую использует скрипт в конце, и укажите все это. Сценарий ожидает, что последний аргумент будет именем хоста и, следовательно, скопирует его в конце сгенерированной команды ssh.

    (По-видимому, это известная проблема. См. Этот отчет об ошибке и этот )

    Для тех, кто хочет заменить сценарий, здесь мой ssh-copy-id.sh

     #!/bin/bash ssh $* 'mkdir -p ~/.ssh;echo '`cat ~/.ssh/id_rsa.pub`' >> ~/.ssh/authorized_keys;chmod 700 ~/.ssh;chmod 600 ~/.ssh/authorized_keys' 

    Теперь вы можете просто ssh-copy-id.sh blah@stuff.com -p123456

    Очевидно, что он не такой фантастический, как настоящий, но, по крайней мере, он работает для зарегистрированного пользователя.

    Давайте будем гением компьютера.