SSH do Windows para o Linux sem digitar uma senha

8

Estou tentando usar o ssh / scp do Windows para o Linux sem precisar digitar uma senha.

Isso é o que eu fiz e não parece funcionar:

  • gerou chaves públicas e privadas usando o Putty Key Generator (no Windows)
  • salvou os arquivos como id_rsa.pub e id_rsa
  • copiou-os para ~/.ssh
  • adicionou id_rsa.pub à caixa do Linux em ~/.ssh/authorized_keys
  • Eu então tento ssh para a caixa Linux do Windows e ainda tenho que digitar uma senha

Estou sentindo falta de algo?

    
por Peter Mortensen 13.01.2010 / 17:44

8 respostas

7

Você precisa do Concurso .

Veja o vídeo Login sem senha com PuTTY e Pageant . E / ou a postagem do blog Howto: Autenticação SSH sem senha com PuTTY .

    
por 13.01.2010 / 17:49
6

Você precisa executar um agente de autenticação no Windows.

Por exemplo, Concurso , usado em combinação com PuTTY (cliente gráfico SSH) ou Plink (seu equivalente na linha de comando).

Você precisará informar ao Pageant a chave pública do seu servidor SSH. Depois disso, ele lidará com as solicitações de autenticação do seu servidor durante a execução em segundo plano.

    
por 13.01.2010 / 17:50
3

Experimente o Plink (parte do PuTTY)

 plink -v [email protected] -pw yourpw "some linux command"
    
por 13.01.2010 / 17:50
3

A configuração da autenticação de chave SSH pode ser um pouco complicada. Parece que você está cobrindo todas as suas bases. Uma coisa que muitas vezes pega as pessoas de surpresa - você precisa ter certeza de que o diretório .ssh e seu conteúdo pertencem a você e são de leitura / escrita apenas por você.

Certifique-se de executar isso (em todos os seus diretórios .ssh ):

chmod -R 700 on ~/.ssh

Se isso não funcionar, ative o registro detalhado adicionando -v ao comando ssh (você pode adicionar até três -vs s para obter mais detalhes).

    
por 13.01.2010 / 17:57
2

Estou assumindo que suas chaves não são protegidas por senha, e o que você está recebendo não é uma solicitação para a senha da sua chave.

~ / .ssh não é usado pelo putty no lado do Windows, e o putty não tem uma configuração de chave privada padrão. Se você estiver usando um cliente ssh de linha de comando, como o cygwin, criar um diretório .ssh fora de sua casa funcionaria. Do putty, você precisará configurar e salvar uma sessão.

Na caixa de diálogo de configuração do putty, observe a conexão - > dados e preencha o campo de nome de usuário de login automático. Então vá para conexão - > ssh - > auth e defina sua chave privada corretamente. Em seguida, volte ao diálogo da sessão e salve esta sessão. Você também pode definir o nome do host, se quiser.

Depois de ter uma sessão salva, você pode usar "putty -load" savedsession "'.

    
por 18.01.2010 / 20:31
1

Você também pode precisar alterar as permissões no seu diretório pessoal:

chmod 755 ~
    
por 04.08.2010 / 14:18
0

Eu tentei algumas maneiras de fazer isso e a primeira que funcionou para mim foi ssh-copy-id

#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :

ssh-keygen.exe -t rsa -b 2048 
ssh-copy-id -i ~/.ssh/id_rsa.pub  $remoteuser@$remotehost


# I'm not sure if these two chmod lines are needed on windows but 
# typically ssh refuses to use a private key file 
# if it is less-well protected than this:
chmod 700 ~/.ssh
chmod 640 ~/.ssh/id_rsa

A maneira mais fácil de obter as ferramentas ssh é instalar o git no Windows.

Eu executei os comandos acima do shell bash instalado pelo git. Executar o ssh-copy-id do powershell de alguma forma não funcionou, então terminei com este script do PowerShell

Param(
  [Parameter()][string]$keyfile="id_rsa",
  [Parameter()][string]$remotehost,
  [Parameter()][string]$remoteuser
  )
write-host "# ---------------------------------------------------------------------------------#"
write-host "# Create an RSA public/private key pair, and copy the public key to remote server  #"
write-host "#                                                                                  #"
write-host "# https://superuser.com/questions/96051                                            #"
write-host "#         ssh-from-windows-to-linux-without-entering-a-password/1194805#1194805    #"
write-host "#                                                                                  #"
write-host "# ---------------------------------------------------------------------------------#"

write-host "Keyfile pair will be saved at : ~/.ssh/$keyfile, ~/.ssh/$keyfile.pub"
write-host "And copied to $remoteuser@$remotehost"
write-host ""
write-host "You will need a password for the copy operation."
write-host ""

if( -not $(ls ~/.ssh) ) { mkdir ~/.ssh }
$sshdir=$(get-item ~/.ssh/).Fullname

#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :
ssh-keygen.exe -t rsa -b 2048 -f "$sshdir$keyfile"
bash -c "ssh-copy-id -i ~/.ssh/$keyfile.pub $remoteuser@$remotehost"

# I'm not sure if these two chmod lines work on windows but 
# typically ssh refuses to use a private key file 
# if it is less-well protected than this:
chmod.exe 700 $sshdir
chmod.exe 640 "$sshdir$keyfile"
    
por 02.04.2017 / 19:28
0

Consegui fazer isso exatamente de Windows 7 usando a opção -i para fornecer uma chave privada de identidade:

ssh -i X:\win-path\to\private-key [email protected]

exceto que no host remoto, minhas chaves autorizadas estão em /etc/ssh/authorized_keys/remoteuser e em /etc/ssh/sshd_config , alterei

#AuthorizedKeysFile     .ssh/authorized_keys
AuthorizedKeysFile      /etc/ssh/authorized_keys/%u

mas não sei se a configuração remota do SSH deve ser importante.

    
por 25.10.2017 / 23:46