O ssh-copy-id é um script bastante simples que deve ser bastante fácil de replicar no Windows.
Se você ignorar toda a manipulação de parâmetros, manipulação de erros e assim por diante, esses são os dois comandos do ssh-copy-id que realmente estão realizando o trabalho a maior parte do tempo.
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ê deseja fazer o mesmo tratamento de erros e o local automático da chave, tenho certeza de que escrever um script no Windows será muito mais complicado, mas certamente possível.
plink.exe -pw password
trabalho. Além disso, se você sabe .ssh / authorized_keys existe o comando é simplesmentetype id_rsa.pub | plink.exe -ssh user@host -pw password "cat >> .ssh/authorized_keys"
.ssh/
diretório existir. O>>
redirecionamento criará o arquivo se ele não existir.Essas respostas não me ajudaram. Eu realmente não precisava de scripts malucos. Eu criei uma chave pública na minha máquina cliente no git bash e estava tentando copiá-la para um VPS.
Após 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á o seu nome de usuário (às vezes "root" ou o que você tiver configurado) 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"
fonte
O ssh-copy-id faz algumas coisas (leia a página de manual para obter detalhes), mas a coisa mais importante a fazer é anexar o conteúdo do seu arquivo de chave pública local a um arquivo remoto chamado allowed_keys.
Você pode fazer isso sozinho abrindo o arquivo de chaves 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 fazer o upload do arquivo usando o WinSCP (que usa sftp ou scp como fallback) e fazer algo semelhante à minha 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ê enviou.
fonte
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 como por outra resposta. :) Trecho do leia-me:
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]"
fonte
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. Mudei o nome da chave pública para "id_rsa"
2. copie o arquivo para o sistema linux de destino usando os créditos ssh em https://serverfault.com/users/984/zoredache para obter 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, em que o linux espera em uma única linha, por isso precisamos corrigi-lo um pouco. Entre no linux e abra o arquivo:
Por exemplo:
Deve se tornar
4. teste
Isso deve listar o conteúdo de / tmp sem solicitar a senha.
fonte
authorized_keys
para linhas únicas é tudo que eu precisava!Se você não possui o
ssh-copy-id
Windows, pode executá-lo no próprio servidor..pub
extensão..pub
arquivo no servidor.No servidor, digite:
No Windows, o
ssh-copy-id
script é fornecido com o Git for Windows . Portanto, você pode usá-lo localmente, se tiver o Git for Windows.Se você não quiser fazer isso manualmente, poderá usar o WinSCP 5.15. Pode configurar a autenticação de chave pública para você.
Use o botão Ferramentas> Instalar chave pública no servidor no 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)
fonte
Se você estiver usando o cmder (ou msysgit / mingw que possui scp & ssh), acabei de escrever um script python simples para isso. 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.
fonte
o que eu fiz, tendo o CygWin no meu Win10, conectando-me ao Linux (com base na resposta acima):
- note: usando cat, ele resolveria o caminho cygwin automaticamente, assim como qualquer comando cygwin usando a estrutura de pastas cygwin-linux-folder
fonte
Os seguintes passos serviriam:
PASSO-1: Gerar par de chaves RSA
STE2-2: equivalente ssh-copy-id no Windows
PASSO-3: A autenticação sem senha funciona!
fonte
Existe uma versão para Windows do ssh-copy-id que encontrei no GitHub: https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist
fonte
Versão do PowerShell para SSH incluída no Git For Windows
De fato, ele pode funcionar enquanto você estiver
ssh
no seu caminho. Adicione o seguinte no seu perfil do PowerShell:Em um console do PowerShell:
fonte