Vraag Is er een equivalent voor ssh-copy-id voor Windows?


Is er een equivalent of poort van ssh-copy-id beschikbaar voor Windows? Dat wil zeggen, is er een eenvoudige manier om SSH-sleutels over te zetten van een lokale machine naar een externe server onder Windows?

In het geval dat het helpt, gebruik ik Pageant en Pot (een Putty-alternatief) al.


46
2018-01-20 18:34


oorsprong




antwoorden:


ssh-copy-id is een vrij eenvoudig script dat vrij eenvoudig moet kunnen worden gerepliceerd onder Windows.

Als u alle parameterverwerking, foutafhandeling enzovoort negeert, zijn dit de twee opdrachten van ssh-copy-id die het werk het meeste van de tijd doen.

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

Met behulp van de putty-gereedschappen moet een dergelijk commando equivalent zijn (niet getest).

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

Als je dezelfde foutafhandeling en de automatische sleutellocatie wilt doen, ben ik er zeker van dat het schrijven van een script onder Windows een stuk lastiger zal zijn, maar zeker mogelijk.


24
2018-01-20 20:09



Bedankt! Ik kon het in eerste instantie niet laten werken; Ik kreeg "toegang geweigerde" fouten terug, maar Plink stopte niet om mij het wachtwoord te laten invoeren. Ik probeerde toen het wachtwoord door te geven met de -pw-schakelaar en dat werkte. Weet je of er een manier is om plink te krijgen om te pauzeren zodat je halverwege het wachtwoord kunt invoeren? - Matt V.
Niet echt zeker over wachtwoordverificatie en plink. Wanneer ik het daadwerkelijk gebruik, heb ik al mijn sleutel op het systeem en ik heb een paginering. - Zoredache
plink.exe -pw password werken. Ook als u weet dat .ssh / authorized_keys bestaat, is de opdracht eenvoudig type id_rsa.pub | plink.exe -ssh user@host -pw password "cat >> .ssh/authorized_keys" - KCD
@KCD Het is voldoende als de .ssh/ map bestaat. De >> omleiding zal dan het bestand creëren als het niet bestaat. - pabouk


ssh-copy-id doet een aantal dingen (lees de man pagina voor details), maar het belangrijkste is dat de inhoud van uw lokale openbare sleutelbestand wordt toegevoegd aan een bestand op afstand met de naam authorized_keys.

  • U kunt dit zelf doen door het sleutelbestand te openen met een teksteditor en de inhoud in de Kitty-terminal te plakken.
    echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys

  • Als alternatief kunt u het bestand uploaden met WinSCP (die sftp gebruikt, of scp als een fallback) en doe iets soortgelijks als mijn vorige suggestie, zonder de lelijke copy / pasting.
    cat id_rsa.pub >> .ssh/authorized_keys
    waarbij id_rsa.pub de bestandsnaam is van de openbare sleutel die u hebt geüpload.


14
2018-01-20 18:55





Deze antwoorden hebben me niet geholpen. Ik had echt geen gek script nodig. Ik had een openbare sleutel op mijn cliëntmachine in git bash gemaakt en probeerde het naar een VPS te kopiëren.

Na het maken van uw openbare sleutel, moet de sleutel worden opgeslagen als "(ongeacht de map waarin u bent begonnen) /. Ssh / id_rsa.pub"

Gebruik dus deze opdracht:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.67.89 "cat >> ~/.ssh/authorized_keys"  waar user is je gebruikersnaam (soms "root", of wat je ook hebt ingesteld), en vervang 123.45.67.89 met het IP-adres van uw machine / host / VPS.

Als de map .ssh is nog niet gemaakt op de hostcomputer, gebruik deze kleine variant:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"


14
2018-03-21 11:53



Ik wou dat ik meer stemmen had! voor de one-liner! - patricktokeeffe


Geïnspireerd door het antwoord van zoredache heb ik een aantal scripts gemaakt die de Windows-versie zijn. Ze zijn echter allemaal afhankelijk van plink. Neem hier een kijkje

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

Ik heb ook een winscp-script dat als een ander antwoord kan worden gebruikt. :) Fragment uit de readme:

Geprobeerde methoden tot nu toe:

  • DOS (.cmd) - Succes
    • usage: .\Scriptname test@example.com password [identity file]
  • VBS (.vbs) - Succes
    • usage: .\Scriptname /i:idtest.pub user@example.com /p:password
  • Powershell (.ps1) - Succes
    • usage: .\Scriptname -i idtest.pub user@example.com password 
  • mremoteNG (ext app) - Succes
    • Selecteer Host, klik met de rechtermuisknop, externe tools, selecteer Scriptnaam
  • WinSCP-script (.bat) - Succes
    • # "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]" 

4
2018-01-27 13:31



Deze zijn best lief - Pred


In Windows 7 is er een ssh.exe

Dit is wat voor mij werkte:

1. creëer identiteit (op vensters)

c:\>ssh-keygen

Dat creëerde een identiteitsbestand in de homedirectory. Ik veranderde de naam van de publieke sleutel in "id_rsa"

2. Kopieer het bestand naar het doel-linux-systeem met behulp van de SSHDank aan https://serverfault.com/users/984/zoredache voor zijn antwoord

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

Opmerking: om een ​​of andere reden werkte piping niet voor mij:

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

3. Corrigeer het bestand op Linux Het id_rsa.pub-bestand op Windows is multiline waarbij linux het in één regel verwacht, dus we moeten het een beetje corrigeren. Login op linux en open het bestand:

vi ~/.ssh/authorized_keys

Bijvoorbeeld:

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

zou moeten worden

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

4. test het

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

Dit zou de inhoud van / tmp moeten vermelden zonder om het wachtwoord te vragen.


4
2018-04-08 19:20



 voor stap 3. Opnieuw formatteren authorized_keys voor losse lijnen is alles wat ik nodig heb! - patricktokeeffe
blij dat het je hielp - sta op het antwoord :) - Deian


Als je gebruikt cmder (of msysgit / mingw die scp & ssh heeft), ik heb hiervoor een eenvoudig python-script geschreven. Het is hier te vinden: https://gist.github.com/ceilfors/fb6908dc8ac96e8fc983

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

Wachtwoord wordt gevraagd bij het uitvoeren van het script.


0
2017-07-03 15:01



waarom heeft dit cmder nodig? - user57411
@ user57411 Het vereist geen cmder, het vereist scp- en ssh-commando's. - ceilfors


wat ik deed, met CygWin op mijn Win10, verbinding met Linux (op basis van het antwoord van Aboves):

- opmerking: het gebruik van cat zou het cygwin-pad automatisch oplossen, evenals elk cygwin-commando dat de cygwin-linux-map-structuur gebruikt

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





Deze volgende stappen zouden doen:

STEP-1: RSA Key Pair genereren

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 equivalent in vensters

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]

STAP-3: Wachtwoordloze authenticatie werkt!

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





Er is een Windows-versie van ssh-copy-id die ik op GitHub heb gevonden: https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist


0
2018-01-07 12:45