Ist es möglich, ssh-copy-id auf einem anderen Port als 22 auszuführen?


99

Ich habe einen Server mit SSH auf einem Nicht-Standard-Port. Anstelle von 22 wird es auf 8129 ausgeführt. Zum Anmelden verwende ich:

ssh -p 8129 hostname

Wenn ich jetzt einen Schlüssel für die Anmeldung ohne Kennwort einrichten muss, muss ich den öffentlichen Schlüssel kopieren und manuell zu authorized_keys hinzufügen. Ich habe festgestellt, dass der Befehl ssh-copy-idzur Vereinfachung dieses Vorgangs verwendet werden kann, aber anscheinend gibt es keine Option, um den Port des SSH-Servers anzugeben.

Gibt es eine Möglichkeit, die ssh-copy-idVerwendung von Port 8129 zu bestimmen, oder sollte ich diesen Befehl einfach vergessen und manuell kopieren / einfügen wie zuvor?

Antworten:


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

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

HINWEIS: Der Port muss sich vor dem Benutzer @ Host befinden, da er sonst nicht aufgelöst wird


11
Es ist wirklich dumm, dass sshSyntax hat ssh -p 1234 user@host, ssh-copy-id "-p 1234 user@host"und schließlich scp -P 1234 user@host. Es wäre so schön, die gleiche Syntax zu haben.
— Tombart

2
@Tombart und dann hat rsync rsync -e "ssh -p 1234" user@host. Ich schwöre, es ist umständlicher, als es sich lohnt, einen benutzerdefinierten Port zu verwenden.
— Garetmckinley

1
In der Antwort von @Colt McCormack wird erklärt, dass dies in neuen Versionen verbessert wurde und dass diese besondere Syntax nicht mehr erforderlich ist.
— Meshy

1
Zu Ihrer Information, für den vollständigen Befehl muss die IP zweimal eingegeben werden und sollte ungefähr so ​​aussehen:ssh-copy-id "root@192.168.0.100 -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100
— Entartet

1
Auf macOS (ich bin auf High Sierra) sind die Anführungszeichen nicht erforderlich. dh ssh-copy-id -p 8129 user@hostfunktioniert.
— Arjun Mehta

46

ssh-copy-idakzeptiert keine Argumente, die an den zugrunde liegenden sshBefehl weitergegeben werden könnten , aber Sie können einen Alias ​​in konfigurieren ~/.ssh/config.

Host myhost
HostName hostname
Port 8129

Dann lauf ssh-copy-id myhost.


3
Dies hat auch den Vorteil, dass die -pFlagge bei regelmäßigen sshVersuchen nicht mehr benötigt wird. Es ist daher nicht nur die richtige Antwort auf diese Frage, es ist die richtige Sache, Punkt.
— Warren Young

Danke dafür. Die 2. Zeile "Hostname Hostname" ist nicht erforderlich, wenn Sie mit dem natürlichen Hostnamen des Hosts zufrieden sind.
— Lonniebiz

17

Ab openssh-client_6.2 gibt es jetzt ein dediziertes Port-Flag für den Befehl, das diese Syntax zulässt:

ssh-copy-id -p 8129 user@example

Es wurde auch die Unterstützung für das Hinzufügen anderer ssh-Optionen mit dem Flag -o hinzugefügt.

Hier ist Ubuntus Manpage für die entsprechende Version, die in 13.04 eingeführt wurde: http://manpages.ubuntu.com/manpages/saucy/man1/ssh-copy-id.1.html


3
Dies ist die einzige Methode, die für die funktionierte.
— Luca Steeb

11

Ein kurzer Blick auf die Quelle zeigt, dass ssh-copy-idanscheinend keine Funktion vorhanden ist, die dies zulässt. Sie könnten jedoch stattdessen Folgendes tun:

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

6

Dies funktioniert (von hier aus ):

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

5

Ich habe es immer scpkopiert:

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

Obwohl ich sagen muss, werde ich wahrscheinlich die anderen (einzeiligen / verbindenden) Methoden verwenden, wenn ich mich in Zukunft an sie erinnere. Dies ist jedoch eine andere Option für Sie.


2

Auf CentOS7 ist nur:

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

Bitte achten Sie darauf, dass user @ host nicht in die Anführungszeichen gesetzt wird, da sonst die folgende Fehlermeldung in dieser Distribution angezeigt wird:

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

0

Mit meinem macOS hat das geklappt.

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

0

Ich benutze diesen Befehl:

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

Beispiel:

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.