Come utilizzare ssh-copy-id su una port non standard

Vorrei utilizzare l'authentication basata su chiave per accedere a uno dei miei computer. Ha sshd in esecuzione su una port che non è l'impostazione predefinita di 22. Voglio utilizzare ssh-copy-id per aggiungere la mia chiave all'elenco di chiavi autorizzate. Ho cercato di specificare la port usando -p , come per il command ssh stesso. Comunque, ottengo veramente messaggi di errore veramente strano.

Per esempio

 [email protected]:~$ ssh-copy-id -p 57777 -i ~/.ssh/id_rsa.pub [email protected] Bad port 'umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys' [email protected]:~$ ssh-copy-id '-p 57777' -i ~/.ssh/id_rsa.pub [email protected] 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 

Come posso fare funzionare? (So ​​che posso manualmente aggiungere la chiave al file authorized_keys sul server ma sono pigro e certamente curioso come convincere ssh-copy-id per fare il suo lavoro :))

La citazione era già una buona idea, ma piuttosto come questo:

 ssh-copy-id -i /home/user/.ssh/id_rsa.pub '-p 57777 [email protected]' 

Metti tutto quello che vuoi dire al command ssh che lo script usa alla fine e cita tutto questo. Lo script prevede che l'ultimo argomento sia il nome host e quindi lo copia alla fine del suo command ssh generato.

(Apparentemente questo è un problema noto. Vedi questo rapporto di bug e questo )

Per coloro che vogliono uno script di sostituzione qui è il mio 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' 

Ora puoi solo ssh-copy-id.sh [email protected] -p123456

Ovviamente non è così fantasioso come quello reale ma alless funziona per l'utente registrato.