it-swarm.com.de

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

Gibt es ein Äquivalent oder einen Port von ssh-copy-id für Windows? Gibt es eine einfache Möglichkeit, SSH-Schlüssel unter Windows von einem lokalen Computer auf einen Remote-Server zu übertragen?

Falls es hilft, verwende ich bereits Pageant und Kitty (eine PuTTY-Alternative).

56
Matt V.

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

Wenn Sie die gesamte Parameterbehandlung, Fehlerbehandlung usw. ignorieren, sind dies die beiden Befehle von ssh-copy-id, die die meiste Zeit tatsächlich 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 [email protected] "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"

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

27
Zoredache

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

Nach dem Erstellen Ihres öffentlichen Schlüssels sollte der Schlüssel als "(welcher Ordner auch immer Sie gestartet haben) /. Ssh/id_rsa.pub" gespeichert werden.

Verwenden Sie also diesen Befehl:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys" wobei user Ihr Benutzername ist (manchmal "root" oder was auch immer Sie eingerichtet haben), und ersetzen Sie 123.45.67.89 mit der IP-Adresse Ihres Computers/Hosts/VPS.

Wenn das Verzeichnis .ssh ist noch nicht auf dem Host-Computer erstellt. Verwenden Sie diese kleine Variante:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"

20
Augie Gardner

ssh-copy-id führt einige Dinge aus (siehe Manpage für Details), aber das Wichtigste ist, den Inhalt Ihrer lokalen öffentlichen Schlüsseldatei an eine entfernte Datei mit dem Namen autorisierte_schlüssel anzuhängen.

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

  • Alternativ können Sie die Datei mit WinSCP (das sftp oder scp als Fallback verwendet) hochladen und etwas Ähnliches wie meinen vorherigen Vorschlag tun, ohne das hässliche Kopieren/Einfügen.
    cat id_rsa.pub >> .ssh/authorized_keys
    wobei id_rsa.pub der Dateiname des öffentlichen Schlüssels ist, den Sie hochgeladen haben.

16

Inspiriert von der Antwort von zoredache habe ich eine Reihe von Skripten erstellt, die die Windows-Version sind. Sie hängen jedoch alle vom Plink ab. Bitte schauen Sie hier

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

Ich habe auch ein Winscp-Skript, das gemäß einer anderen Antwort verwendet werden kann. :) Auszug aus der Readme:

Bisher versuchte Methoden:

  • DOS (.cmd) - Erfolg
  • VBS (.vbs) - Erfolg
  • Powershell (.ps1) - Erfolg
  • mremoteNG (ext app) - Erfolg
    • Wählen Sie Host, klicken Sie mit der rechten Maustaste auf externe Tools und wählen Sie Skriptname
  • WinSCP-Skript (.bat) - Erfolg
    • # "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]"
5
Vijay

Wenn du nicht hast ssh-copy-id unter Windows können Sie es auf dem Server selbst ausführen.

  • Laden Sie in PuTTYgen Ihren privaten Schlüssel (.ppk).
  • Kopieren Sie den Inhalt des öffentlichen Schlüssels der Box zum Einfügen in die OpenSSH-Datei authorized_keys in eine Zwischenablage.
  • Fügen Sie es in Ihren bevorzugten Editor ein (Windows Notepad reicht aus).
  • Speichern Sie den Inhalt in einer Datei mit .pub Erweiterung.
  • Laden Sie das .pub Datei an den Server.
  • Melden Sie sich mit einem SSH-Client wie PuTTY beim Server an.
  • Auf dem Servertyp:

    ssh-copy-id -i mykey.pub [email protected]
    

Unter Windows ssh-copy-id Skript kommt mit Git für Windows . Sie können dies also lokal verwenden, wenn Sie Git für Windows haben.


Wenn Sie dies nicht manuell tun möchten, können Sie WinSCP 5.15 verwenden. Es kann die Authentifizierung mit öffentlichem Schlüssel für Sie einrichten.
Verwenden Sie Tools> Öffentlichen Schlüssel in Server installieren auf SSH> Authentifizierungsseite des WinSCP-Dialogfelds Erweiterte Site-Einstellungen .

(enter image description here

(Ich bin der Autor von WinSCP)

5
Martin Prikryl

In Windows 7 gibt es eine ssh.exe

Folgendes hat bei mir funktioniert:

1. Identität erstellen (unter Windows)

c:\>ssh-keygen

Dadurch wurde eine Identitätsdatei im Home-Verzeichnis erstellt. Ich habe den Namen des öffentlichen Schlüssels in "id_rsa" geändert.

2. Kopieren Sie die Datei mit dem ssh Credits to https://serverfault.com/users/984/zoredache für seine Antwort auf das Ziel-Linux-System

c:\>ssh [email protected] "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 funktionierten die Rohrleitungen bei mir nicht:

# this should work but it didn't work for me 
type file | ssh [email protected] "cat >> /tmp/t.txt"

3. Korrigieren Sie die Datei unter Linux Die Datei id_rsa.pub unter Windows ist mehrzeilig, wobei Linux sie in einer einzelnen Zeile erwartet, sodass wir sie etwas korrigieren müssen. Melden Sie sich bei Linux an und öffnen Sie die Datei:

vi ~/.ssh/authorized_keys

Zum Beispiel:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, [email protected]"
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== [email protected]

4. teste es

c:\>ssh [email protected] "ls -al /tmp/"

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

5
Deian

was ich getan habe, CygWin auf meinem Win10 zu haben, eine Verbindung zu Linux herzustellen (basierend auf der obigen Antwort):

- Hinweis: Mit cat werden der Cygwin-Pfad sowie alle Cygwin-Befehle mit der Cygwin-Linux-Ordnerstruktur automatisch aufgelöst.

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 [email protected] "umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys"
5. ..enter server password
6. > ssh [email protected] (testing, not beeing asked for password)
0
BananaAcid

Wenn Sie cmder (oder msysgit/mingw mit scp & ssh) verwenden, habe ich gerade ein einfaches python Skript dafür geschrieben. Es kann hier gefunden werden: - https://Gist.github.com/ceilfors/fb6908dc8ac96e8fc98

Beispielverwendung: python ssh-copy-id.py user @ remote-machine.

Das Kennwort wird beim Ausführen des Skripts abgefragt.

0
ceilfors

Powershell-Version für SSH in Git für Windows enthalten

Tatsächlich kann es funktionieren, solange Sie ssh in Ihrem Pfad haben. Fügen Sie Ihrem Powershell-Profil Folgendes hinzu:

function ssh-copy-id([string]$userAtMachine){   
    $publicKey = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub"
    if (!(Test-Path "$publicKey")){
        Write-Error "ERROR: failed to open ID file '$publicKey': No such file"            
    }
    else {
        & cat "$publicKey" | ssh $userAtMachine "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"      
    }
}

In einer Powershell-Konsole:

ssh-copy-id [email protected]
0
Fab

Diese folgenden Schritte würden reichen:

SCHRITT 1: Generieren Sie ein RSA-Schlüsselpaar

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 [email protected]

STE2-2: SSH-Copy-ID-Äquivalent in Windows

C:\Users\user>ssh [email protected] "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.
*************************************************************************
[email protected]'s password:[Enter Password for first time]

SCHRITT 3: Die kennwortlose Authentifizierung funktioniert!

C:\Users\user>ssh [email protected]
*************************************************************************
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
GANESH

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
user393933