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?

Milan Babuškov
quelle

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

Jsan
quelle
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 "[email protected] -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.

Gilles
quelle
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

Colt McCormack
quelle
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
Chris Down
quelle
6

Dies funktioniert (von hier aus ):

ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 221 username@host'
DJR
quelle
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.

Kevin
quelle
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'
Max Cuttins
quelle
0

Mit meinem macOS hat das geklappt.

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

Ich benutze diesen Befehl:

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

Beispiel:

ssh-copy-id ssh://[email protected]:23

Carlos
quelle