Frage Gibt es für Windows eine Entsprechung zur ssh-copy-id?


Gibt es für Windows einen entsprechenden oder einen Port der ssh-copy-id? Das heißt, gibt es eine einfache Möglichkeit, SSH-Schlüssel von einem lokalen Computer zu einem Remote-Server unter Windows zu übertragen?

Falls es hilft, benutze ich Pageant und Kitty (eine Putty-Alternative) schon.


46
2018-01-20 18:34


Ursprung




Antworten:


ssh-copy-id ist ein ziemlich einfaches Skript, das unter Windows ziemlich einfach zu replizieren ist.

Wenn Sie die gesamte Parameterbehandlung, Fehlerbehandlung usw. ignorieren, sind dies die beiden Befehle von ssh-copy-id, die die meiste Zeit die Arbeit erledigen.

GET_ID="cat ${ID_FILE}"
{ eval "$GET_ID" ; } | ssh ${1%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1

Mit den Putty-Tools sollte ein Befehl wie dieser gleichwertig sein (nicht getestet).

type  public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"

Wenn Sie die gleiche Fehlerbehandlung und die automatische Schlüsselposition durchführen möchten, bin ich sicher, dass das Schreiben eines Skripts unter Windows sehr viel schwieriger, aber sicher möglich ist.


24
2018-01-20 20:09



Vielen Dank! Ich konnte es zuerst nicht zur Arbeit bringen; Ich bekam "Zugriff verweigert" Fehler zurück, aber Plink hielt nicht an, um mich das Passwort eingeben zu lassen. Ich versuchte dann, das Passwort mit dem Schalter -pw zu übergeben und das funktionierte. Weißt du, ob es eine Möglichkeit gibt, Plink zu unterbrechen, damit du das Passwort mitten auf dem Weg eingeben kannst? - Matt V.
Nicht wirklich sicher über Passwort-Authentifizierung und Plink. Immer wenn ich es benutze, habe ich bereits meinen Schlüssel im System, und ich habe pagent ausgeführt. - Zoredache
plink.exe -pw password funktioniert. Auch wenn Sie wissen, .ssh / authorized_keys existiert der Befehl einfach type id_rsa.pub | plink.exe -ssh user@host -pw password "cat >> .ssh/authorized_keys" - KCD
@KCD Es genügt, wenn der .ssh/ Verzeichnis existiert. Das >> Umleitung wird dann die Datei erstellen, wenn sie nicht existiert. - pabouk


ssh-copy-id macht ein paar Dinge (lesen Sie die Man Seite für Details), aber die wichtigste Sache, die es tut, ist, den Inhalt Ihrer lokalen öffentlichen Schlüsseldatei an eine entfernte Datei anzufügen, die authorized_keys genannt wird.

  • Sie können dies selbst tun, indem Sie die Schlüsseldatei mit einem Texteditor öffnen und den Inhalt im Kitty-Terminal einfügen.
    echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys

  • Alternativ könnten Sie die Datei mit hochladen WinSCP (die sftp, oder scp als Fallback verwendet) und etwas ähnliches wie mein vorheriger Vorschlag, ohne das hässliche Kopieren / Einfügen.
    cat id_rsa.pub >> .ssh/authorized_keys
    Dabei steht id_rsa.pub für den Namen des öffentlichen Schlüssels, den Sie hochgeladen haben.


14
2018-01-20 18:55





Diese Antworten haben mir nicht geholfen. Ich brauchte wirklich keine verrückten Drehbücher. Ich hatte einen öffentlichen Schlüssel auf meinem Client-Rechner in git bash erstellt und versuchte es auf einen VPS zu kopieren.

Nach dem Erstellen Ihres öffentlichen Schlüssels sollte der Schlüssel wie folgt gespeichert werden: "(welcher Ordner auch immer gestartet wurde) /. Ssh / id_rsa.pub"

Also benutze diesen Befehl:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.67.89 "cat >> ~/.ssh/authorized_keys"  woher user ist Ihr Benutzername (manchmal "root" oder was auch immer Sie eingerichtet haben) und ersetzen 123.45.67.89 mit der IP-Adresse Ihres Computers / Hosts / VPS.

Wenn das Verzeichnis .ssh ist noch nicht auf dem Hostcomputer erstellt, verwenden Sie diese kleine Variante:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"


14
2018-03-21 11:53



Ich wünschte, ich hätte mehr Stimmen! für den Einzeiler! - patricktokeeffe


Inspiriert von der Antwort von Zoredache habe ich eine Reihe von Skripten erstellt, die die Windows-Version sind. Sie sind jedoch alle auf Plink angewiesen. Bitte schaue hier nach

https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/

Ich habe auch ein Winscp-Skript, das nach einer anderen Antwort verwendet werden kann. :) Auszug aus der Liesmich:

Bisher versuchte Methoden:

  • DOS (.cmd) - Erfolg
    • usage: .\Scriptname test@example.com password [identity file]
  • VBS (.vbs) - Erfolg
    • usage: .\Scriptname /i:idtest.pub user@example.com /p:password
  • Powershell (.ps1) - Erfolg
    • usage: .\Scriptname -i idtest.pub user@example.com password 
  • mremoteNG (ext app) - Erfolg
    • Wählen Sie Host, Rechtsklick, Externe Tools, wählen Sie Scriptname
  • WinSCP-Skript (.bat) - Erfolg
    • # "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]" 

4
2018-01-27 13:31



Diese sind ziemlich süß - Pred


In Windows 7 gibt es eine ssh.exe

Hier ist, was bei mir funktioniert hat:

1. Identität erstellen (unter Windows)

c:\>ssh-keygen

Das erstellte eine Identitätsdatei in dem Basisverzeichnis. Ich habe den Namen des öffentlichen Schlüssels in "id_rsa" geändert

2. Kopieren Sie die Datei mit dem ssh in das Ziel-Linux-SystemAnerkennung an https://serverfault.com/users/984/zoredache für seine Antwort

c:\>ssh user@lnxhost "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1" < \\path_to_where_the_file_was_generated_from_ssh_key_gen\id_rsa.pub

Hinweis: Aus irgendeinem Grund funktionierte Piping für mich nicht:

# this should work but it didn't work for me 
type file | ssh user@lnxhost "cat >> /tmp/t.txt"

3. Korrigieren Sie die Datei unter Linux Die id_rsa.pub-Datei in Windows ist mehrzeilig, da Linux sie in einer einzelnen Zeile erwartet, also müssen wir sie etwas korrigieren. Logge dich in Linux ein und öffne die Datei:

vi ~/.ssh/authorized_keys

Zum Beispiel:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, user@winhost"
AAAAB3NzaC1yc2EAAAABIwAAAQEAnvYlVooXGoj3+7huZBUqf4wj57r25SHCKiiShyla33
5flX7Rsmb4meExpdh2NzfzffG15xl1wo0xBZ3HdZdqF2GUniEcNbtVjS1FKzQwPfsYPHMC
Y58qT0U2ZgK1zsXj2o0D2RWrCv3DFFfwUgNyZRYN2HK32umY6OmGSOVuJvIKhT+X6YaCVy
ax3CHv2ByB2OTBl9mh4nrwYAVXToT+X2psBE+MKB5R85lrUGkl3GtymTk10Dvf5O80exdT
LFRMvkCA5RAIZgvxMk/bbNaH/0UHQoctX9oaDeKGWUPfVaknFBQdU9009+lK/ocAlKVNHE
Qkw+1wuV6dFoT1/hngSw==
---- END SSH2 PUBLIC KEY ----

soll werden

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnvYlVooXGoj3+7huZBUqf4wj57r25SHCKiiShyla335flX7Rsmb4meExpdh2NzfzffG15xl1wo0xBZ3HdZdqF2GUniEcNbtVjS1FKzQwPfsYPHMCY58qT0U2ZgK1zsXj2o0D2RWrCv3DFFfwUgNyZRYN2HK32umY6OmGSOVuJvIKhT+X6YaCVyax3CHv2ByB2OTBl9mh4nrwYAVXToT+X2psBE+MKB5R85lrUGkl3GtymTk10Dvf5O80exdTLFRMvkCA5RAIZgvxMk/bbNaH/0UHQoctX9oaDeKGWUPfVaknFBQdU9009+lK/ocAlKVNHEQkw+1wuV6dFoT1/hngSw== user@winhost

4. teste es

c:\>ssh user@lnxhost "ls -al /tmp/"

Dies sollte den Inhalt von / tmp auflisten, ohne nach dem Passwort zu fragen.


4
2018-04-08 19:20



 für Schritt 3. Neuformatierung authorized_keys Einzeilige ist alles was ich brauche! - patricktokeeffe
glücklich es hat dir geholfen - stimme die Antwort ab :) - Deian


Wenn Sie verwenden cmder (oder msysgit / mingw mit scp & ssh), ich habe dazu ein einfaches Python-Skript geschrieben. Es kann hier gefunden werden: https://gist.github.com/ceilfors/fb6908dc8ac96e8fc983

Beispielverwendung: python ssh-copy-id.py Benutzer @ Remote-Maschine.

Das Passwort wird beim Ausführen des Skripts angezeigt.


0
2017-07-03 15:01



warum benötigt das cmder? - user57411
@ user57411 Es benötigt keinen cmder, es erfordert scp und ssh Befehle. - ceilfors


was ich getan habe, CygWin auf meinem Win10, Verbindung zu Linux (basierend auf der oben genannten Antwort):

- Hinweis: Mit cat würde der Cygwin-Pfad automatisch aufgelöst, ebenso wie jeder cygwin-Befehl, der die cygwin-linux-Ordnerstruktur verwendet

1. added c:\cygwin\bin to the environment's Path variable
2. starting cmd.exe (windows commandline)
3. > ssh-keygen -t rsa   (just pressing enter till done)
4. > cat ~/.ssh/id_rsa.pub | ssh user@server "umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys"
5. ..enter server password
6. > ssh user@server (testing, not beeing asked for password)

0
2017-09-06 06:19





Diese folgenden Schritte würden tun:

SCHRITT-1: RSA-Schlüsselpaar generieren

C:\Users\user>ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/user//.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/user//.ssh/id_rsa.
Your public key has been saved in /c/Users/user//.ssh/id_rsa.pub.
The key fingerprint is:
20:16:9b:0d:00:92:c4:34:99:51:20:b7:ef:50:c4:0f user@localhost

STE2-2: ssh-copy-id entspricht in Windows

C:\Users\user>ssh user@remote "umask 077; test -d .ssh || mkdir .ssh ; cat >> .s
sh/authorized_keys || exit 1" < "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys
 || exit 1" < C:\Users\user\.ssh\id_rsa.pub
The authenticity of host 'remote (xx.xx.xxx.xx)' can't be established.
RSA key fingerprint is 99:99:73:74:fe:14:bc:91:c8:3b:ac:f4:95:99:4d:06.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'remote,xx.xx.xxx.xx' (RSA) to the list of known hosts.
*************************************************************************
This computer system is the property of Sample Corporation and is to
be used for business purposes.  All information, messages, software and
hardware created, stored, accessed, received, or used by you through
this system is considered to be the sole property of Sample Corporation
and can and may be monitored, reviewed, and retained at any time.  You
should have no expectation that any such information, messages or
material will be private.  By accessing and using this computer, you
acknowledge and consent to such monitoring and information retrieval.
By accessing and using this computer, you also agree to comply with
all of Sample Company's policies and standards.
*************************************************************************
user@remote's password:[Enter Password for first time]

STEP-3: Passwortlose Authentifizierung funktioniert!

C:\Users\user>ssh user@remote
*************************************************************************
This computer system is the property of Sample Corporation and is to
be used for business purposes.  All information, messages, software and
hardware created, stored, accessed, received, or used by you through
this system is considered to be the sole property of Sample Corporation
and can and may be monitored, reviewed, and retained at any time.  You
should have no expectation that any such information, messages or
material will be private.  By accessing and using this computer, you
acknowledge and consent to such monitoring and information retrieval.
By accessing and using this computer, you also agree to comply with
all of Sample Company's policies and standards.
*************************************************************************
Last login: Wed Oct 14 14:37:13 2015 from localhost

0
2017-10-15 18:59





Es gibt eine Windows-Version von ssh-copy-id, die ich auf GitHub gefunden habe: https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist


0
2018-01-07 12:45