Existe algum equivalente ou porta de ssh-copy-id disponível para Windows? Ou seja, existe uma maneira fácil de transferir chaves SSH de uma máquina local para um servidor remoto no Windows?
Caso ajude, já estou usando Pageant e Kitty (uma alternativa ao Putty).
ssh-copy-id é um script bastante simples que deve ser muito 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 do ssh-copy-id que estão realmente fazendo o trabalho na maioria das vezes.
Usando as ferramentas de massa, um comando como este deve ser equivalente (não testado).
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.
Essas respostas não me ajudaram. Eu realmente não precisava de nenhum script maluco. Eu criei uma chave pública na minha máquina cliente no git bash e estava tentando copiá-la para um VPS.
Depois de criar sua chave pública, a chave deve ser armazenada como "(qualquer pasta em que você iniciou)/.ssh/id_rsa.pub"
Portanto, use este comando:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys"
ondeuser
está seu nome de usuário (às vezes "root", ou o que você configurou) e substitua123.45.67.89
pelo endereço IP da sua 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"
ssh-copy-id faz algumas coisas (leia a página man para detalhes), mas a coisa mais importante que faz é anexar o conteúdo do seu arquivo de chave pública local a um arquivo remoto chamado authorized_keys.
Você pode fazer isso sozinho abrindo o arquivo de chave com um editor de texto e colando o conteúdo no terminal Kitty.
echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys
Como alternativa, você pode enviar o arquivo usando o WinSCP (que usa sftp ou scp como fallback) e fazer algo semelhante à minha sugestão anterior, sem copiar/colar feio.
cat id_rsa.pub >> .ssh/authorized_keys
onde id_rsa.pub é o nome do arquivo da chave pública que você carregou.
Inspirado pela resposta do zoredache, criei vários scripts que são a versão do Windows. No entanto, todos eles dependem do plink. Por favor, dê uma olhada aqui
https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/
Eu também tenho um script winscp que pode ser usado de acordo com outra resposta. :) Trecho do readme:
Métodos tentados até agora:
usage: .\Scriptname [email protected] password [identity file]
usage: .\Scriptname /i:idtest.pub [email protected] /p:password
usage: .\Scriptname -i idtest.pub [email protected] password
# "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]"
No Windows 7 há um ssh.exe
Aqui está o que funcionou para mim:
1. criar identidade (no Windows)
Isso criou um arquivo de identidade no diretório inicial. Alterei o nome da chave pública para "id_rsa"
2. copie o arquivo para o sistema linux de destino usando os créditos ssh para https://serverfault.com/users/984/zoredache para sua resposta
Nota: Por algum motivo, a tubulação não funcionou para mim:
3. Corrija o arquivo no linux O arquivo id_rsa.pub no Windows é multilinha onde o linux espera em uma única linha, então temos que corrigi-lo um pouco. Faça login no linux e abra o arquivo:
Por exemplo:
Deve se tornar
4. teste
Isso deve listar o conteúdo de /tmp sem pedir a senha.
Caso não tenha
ssh-copy-id
no Windows, você pode executá-lo no próprio servidor..pub
extensão..pub
arquivo para o servidor.No tipo de servidor:
No
ssh-copy-id
script do Windows vem com o Git para Windows . Portanto, você pode usar isso localmente, se tiver o Git para Windows.Se não quiser fazer isso manualmente, você pode usar o WinSCP 5.15. Ele pode configurar a autenticação de chave pública para você.
Use o botão Ferramentas > Instalar chave pública no servidor na página SSH > Autenticação da caixa de diálogo Configurações avançadas do site do WinSCP .
(Eu sou o autor do WinSCP)
Se você estiver usando cmder (ou msysgit/mingw que tem scp & ssh), acabei de escrever um script python simples para isso. Ele pode ser encontrado aqui: https://gist.github.com/ceilfors/fb6908dc8ac96e8fc983
Exemplo de uso: python ssh-copy-id.py user@remote-machine.
A senha será solicitada ao executar o script.
o que eu fiz, tendo CygWin no meu Win10, conectando ao Linux (com base na resposta acima):
- nota: usando cat, ele resolveria o caminho cygwin automaticamente, assim como qualquer comando cygwin usando a estrutura de pasta cygwin-linux
Essas etapas a seguir fariam:
PASSO-1: Gerar Par de Chaves RSA
STE2-2: equivalente a ssh-copy-id no Windows
PASSO-3: A autenticação sem senha funciona!
Existe uma versão do Windows do ssh-copy-id que encontrei no GitHub: https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist