SSH do Windows para Linux sem digitar uma senha

11

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

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

  • chaves públicas e privadas geradas usando o Putty Key Generator (no Windows)
  • salvou os arquivos como id_rsa.pubeid_rsa
  • copiou-os para ~/.ssh
  • id_rsa.pub adicionado à caixa Linux em ~/.ssh/authorized_keys
  • Eu tento sshacessar a caixa Linux do Windows e ainda preciso inserir uma senha

Estou esquecendo de algo?

Peter Mortensen
fonte

Respostas:

10

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

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

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

Silvio Donnini
fonte
1
Nota: (Isso não era óbvio para mim.) Ao abrir o Pageant, ele abrirá como um ícone na área de notificação no canto inferior direito. Clique com o botão direito do mouse, clique em Add Key e selecione o arquivo .ppk que foi gerado a partir do puttygen.
badjr
8

Você precisa de concurso .

Veja o vídeo Login sem senha com PuTTY e Pageant . E / ou a publicação no blog Howto: autenticação SSH sem senha com o PuTTY .

Eduardo
fonte
1
Tente vincular a tutoriais baseados em texto em vez de vídeos.
codificador
O link do blog está quebrado. Tente esta: tecmint.com/ssh-passwordless-login-with-putty
Kai Wang
2
O link do blog quebrado é a razão exata pela qual as respostas devem ser mais do que um link.
Ramhound 11/07
4

Experimente o Plink (parte do PuTTY)

 plink -v [email protected] -pw yourpw "some linux command"
Carlos Gutiérrez
fonte
3
+1 para obter uma resposta correta, mas é melhor usar um par de chaves pública / privada do que uma senha.
Ted Percival
Apesar da alternativa, com o plink você não pode ter um terminal normal, por exemplo: as teclas de seta não funcionam no histórico
PYK
3

Configurar a autenticação de chave SSH pode ser um pouco complicado. Parece que você está cobrindo todas as suas bases. Uma coisa que muitas vezes pega as pessoas desprevenidas - você precisa garantir que o .sshdiretório e seu conteúdo sejam de sua propriedade e sejam lidos / gravados somente por você.

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

chmod -R 700 on ~/.ssh

Se isso não funcionar, ative o registro detalhado adicionando -vao seu sshcomando (você pode adicionar até três -vss para obter mais detalhes).

rcw3
fonte
2

Presumo que suas chaves não sejam protegidas por senha, e o que você recebe não é um pedido de senha.

~ / .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, a criação de um diretório .ssh fora de sua casa funcionaria. Na massa, você precisará configurar e salvar uma sessão.

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

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

Andrew B
fonte
Além disso, chmod 700 ~ / .ssh na máquina de destino e chmod 644 ~ / .ssh / chaves autorizadas. Depois de seguir suas instruções e definir as permissões corretamente, ele começou a funcionar para mim.
Blisterpeanuts 28/09
2

Eu usei isso:

c: \> type c:\users\my_name\.ssh\id_rsa.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys"

Robert Djabarov
fonte
1

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

chmod 755 ~
Haydn
fonte
1

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

ssh -i X: \ caminho do win \ para \ remoteuser-chave [email protected]

exceto que, no host remoto, minhas chaves autorizadas estão dentro /etc/ssh/authorized_keys/remoteusere dentro /etc/ssh/sshd_config, mudei

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

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

anfíbio
fonte
1

Tudo o que você precisa é das sshferramentas de linha de comando entre plataformas , ssh-keygen& ssh-copy-id. O git para Windows os inclui.

Faça isso no bashshell instalado pelo git :

#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

# These two chmod lines are needed on unix platforms, probably not on Windows. 
# 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

Ou execute este script no 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 "# /superuser/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"

# ssh-copy-id somehow didn't work in Powershell so I called it via bash
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"

Depois disso, o login sem senha deve funcionar para ambos sshe scp.

Chris F Carroll
fonte