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 .
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:
id_rsa.pub
e id_rsa
~/.ssh
~/.ssh/authorized_keys
ssh
para a caixa Linux do Windows e ainda tenho que digitar uma senha Estou sentindo falta de algo?
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 .
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.
Experimente o Plink (parte do PuTTY)
plink -v [email protected] -pw yourpw "some linux command"
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).
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 "'.
Você também pode precisar alterar as permissões no seu diretório pessoal:
chmod 755 ~
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"
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.