Existe um equivalente a ssh-copy-id para Windows?

49

Existe algum equivalente ou porta de ssh-copy-id disponível para o Windows? Ou seja, existe uma maneira fácil de transferir chaves SSH de uma máquina local para um servidor remoto no Windows?

Caso isso aconteça, estou usando o Pageant e Kitty (uma alternativa ao Putty) já.

    
por Matt V. 20.01.2011 / 19:34

10 respostas

25

ssh-copy-id é um script bem simples que deve ser fácil de replicar no Windows.

Se você ignorar todo o tratamento de parâmetros, tratamento de erros e assim por diante, esses são os dois comandos de ssh-copy-id que estão realmente realizando o trabalho na maioria das vezes.

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

Usando as ferramentas putty, um comando como este deve ser equivalente (não testado).

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

Se você quiser fazer o mesmo tratamento de erros e a localização automática da chave, tenho certeza de que escrever um script no Windows será muito mais complicado, mas certamente possível.

    
por 20.01.2011 / 21:09
15

ssh-copy-id faz algumas coisas (leia a página de manual para detalhes ), mas o mais importante é anexar o conteúdo do seu arquivo de chave pública local a um arquivo remoto chamado authorized_keys.

  • Você mesmo pode fazer isso abrindo o arquivo de chave com um editor de texto e colando o conteúdo no terminal do Kitty.
    echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys

  • Como alternativa, você poderia fazer o upload do arquivo usando o WinSCP (que usa sftp, ou scp como fallback) e fazer algo semelhante ao meu sugestão anterior, sem a cópia / colagem feia.
    cat id_rsa.pub >> .ssh/authorized_keys
    onde id_rsa.pub é o nome do arquivo da chave pública que você carregou.

por 20.01.2011 / 19:55
15

Essas respostas não me ajudaram. Eu realmente não precisava de nenhum script maluco. Eu tinha criado uma chave pública na minha máquina cliente no git bash e estava tentando copiá-lo para um VPS.

Depois de criar sua chave pública, a chave deve ser armazenada como "(qualquer pasta que você tenha iniciado) /. ssh / id_rsa.pub"

Portanto, use este comando:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys" onde user é seu nome de usuário (às vezes, "root", ou o que você possa ter configurado) e substitua 123.45.67.89 pelo endereço IP da máquina / host / VPS .

Se o diretório .ssh ainda não foi criado na máquina host, use esta pequena variação:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"

    
por 21.03.2014 / 12:53
5

Inspirado pela resposta do zoredache, criei um monte de scripts que são a versão do windows. No entanto, todos eles dependem de plink. Por favor, dê uma olhada aqui

link

Eu também tenho um script winscp que pode ser usado de acordo com outra resposta. :) Trecho do leiame:

Tentativa de métodos até agora:

  • DOS (.cmd) - sucesso
  • VBS (.vbs) - sucesso
  • Powershell (.ps1) - sucesso
  • mremoteNG (ext app) - Sucesso
    • Selecione Host, clique com o botão direito do mouse, ferramentas externas, selecione Nome de script
  • Script WinSCP (.bat) - sucesso
    • # "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]"
por 27.01.2014 / 14:31
4

No Windows 7, há um ssh.exe

Aqui está o que funcionou para mim:

1. criar identidade (no windows)

c:\>ssh-keygen

Isso criou um arquivo de identidade no diretório inicial. Eu mudei o nome da chave pública para "id_rsa"

2. copie o arquivo para o sistema linux de destino usando o ssh Créditos para link para sua resposta

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

Nota: Por alguma razão, a tubulação não funcionou para mim:

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

3. Corrija o arquivo no linux O arquivo id_rsa.pub no windows é multiline, onde o linux espera em uma única linha, então temos que corrigi-lo um pouco. Entre no linux e abra o arquivo:

vi ~/.ssh/authorized_keys

Por exemplo:

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

deve se tornar

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

4. teste-o

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

Isso deve listar o conteúdo de / tmp sem solicitar a senha.

    
por 08.04.2015 / 21:20
2

Se você não tiver ssh-copy-id no Windows, poderá executá-lo no próprio servidor.

  • No PuTTYgen, carregue sua chave privada (.ppk);
  • Copie o conteúdo da caixa Chave pública para colar no arquivo authorized_keys do OpenSSH em uma área de transferência.
  • Cole-o no seu editor favorito (o Windows Notepad serve).
  • Salve o conteúdo em um arquivo com extensão .pub .
  • Carregue o arquivo .pub no servidor.
  • Faça login no servidor com um cliente SSH, como o PuTTY.
  • No tipo de servidor:

    ssh-copy-id -i mykey.pub username@localhost
    

No Windows, o script ssh-copy-id vem com o Git para Windows . Então você pode usar isso localmente, se você tiver o Git for Windows.

O

WinSCP 5.14 beta também pode configurar a autenticação de chave pública para você.
Use Ferramentas > Botão Instalar chave pública no servidor em SSH > Página de autenticação da caixa de diálogo Configurações avançadas do site do WinSCP .

(eu sou o autor do WinSCP)

    
por 19.11.2018 / 11:24
0

Se você está usando cmder (ou msysgit / mingw que tem scp & ssh), eu acabei de escrever um simples python roteiro para isso. Ele pode ser encontrado aqui: link

Uso da amostra: python ssh-copy-id.py user @ remote-machine.

A senha será solicitada ao executar o script.

    
por 03.07.2014 / 17:01
0

o que fiz, tendo o CygWin no meu Win10, conectando-se ao Linux (com base na resposta acima):

- note: usando cat, ele resolveria o caminho cygwin automaticamente, assim como qualquer comando cygwin usando a estrutura cygwin-linux-folder

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)
    
por 06.09.2015 / 08:19
0

Os seguintes passos seriam:

STEP-1: gerar um par de chaves RSA

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: equivalente a ssh-copy-id no 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: a autenticação sem senha funciona!

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
    
por 15.10.2015 / 20:59
0

Existe uma versão para Windows do ssh-copy-id que encontrei no GitHub: link

    
por 07.01.2017 / 13:45