ssh sem senha automático no login / restart

5

Eu quero que o ssh sem senha persista mesmo após eu reiniciar ou fazer logoff e, em seguida, fazer o login. De alguma forma eu tenho que executar o ssh-agent e usar o comando ssh-add no login. Em um tutorial, li que deveria adicionar as seguintes linhas a .bashrc :

ssh_agent="$HOME/.ssh-agent.sh"
if [ -f $ssh_agent ]
then
  source $ssh_agent > /dev/null
fi

Ao mesmo tempo, o tutorial mencionou que

While ssh-agent is running all your processes (including your cron jobs) shouldn't need a password. However if ssh-agent dies or is killed things might go wrong since the old settings are left over.

Eu quero um método seguro que me permita usar o ssh sem senha, mesmo depois que eu reiniciar / relogar. Alguma sugestão?

    
por Abhishek Anand 29.04.2011 / 13:40

4 respostas

3

A maneira mais fácil: Instale pam_ssh . Ele iniciará automaticamente um agente ssh e carregará suas chaves quando você efetuar login.

Da maneira mais difícil: coloque isso no seu script de login ( ~/.bash_profile ou ~/.profile ):

check-ssh-agent() {
    # 'ssh-add' returns 2 if the agent is running but empty; ignore.
    ssh-add -l &>/dev/null || (( $? == 2 ))
}

if ! check-ssh-agent; then
    envfile=~/.ssh/agent-$HOSTNAME
    if [ -f "$envfile" ]; then
        . "$envfile" >/dev/null
    fi
    if ! check-ssh-agent; then
        ssh-agent >"$envfile"
        . "$envfile" >/dev/null
        if [ -t 0 ]; then
            # This 'if' can be removed if all your keys are passphrase-less.
            ssh-add
        fi
    fi
    unset envfile
fi

As "configurações restantes" são apenas a variável de ambiente $SSH_AUTH_SOCK , que você pode corrigir facilmente. (Além disso, tudo o que poderia dar errado é uma mensagem de erro do ssh.)

    
por 29.04.2011 / 15:05
1

Use apenas um soquete de agente fixo. Por exemplo:

export SSH_AUTH_SOCK=/tmp/user.agent
ssh-agent -a /tmp/user.agent
ssh-add
ssh -f -N -R 22:localhost:2222 server

Isso inicia ssh-agent usando o soquete /tmp/user.agent e, em seguida, executa ssh-add para carregar uma chave privada nele. Em seguida, inicio ssh no servidor com uma porta remota para frente. A tentativa de conectar-se à porta 2222 no servidor será encaminhada de volta ao cliente e conectada à porta 22 no cliente. -N diz que não comece uma concha e -f diz garfo e corra em segundo plano. Eu uso esse tipo de comando para tornar meu desktop acessível a partir de um servidor sem abrir uma porta no meu roteador. Mais tarde, quando você fizer login novamente, o agente ainda estará em execução. Apenas restaure o soquete do agente com export SSH_AUTH_SOCK=/tmp/user.agent e você pode executar o ssh novamente. O ssh-add só é necessário depois que o ssh-agent é iniciado pela primeira vez.

    
por 29.04.2011 / 16:34
0

Com Chaveiro , você pode fazer isso desde que use um par de chaves sem senha. É um simples shell script envolvendo o ssh-agent, então não há necessidade de instalar nenhum software adicional.

Ele detecta automaticamente se você possui ssh-agents em execução e os utiliza. Você pode configurá-lo para carregar automaticamente um conjunto de chaves e para esquecê-las em certas ocasiões.

É ideal para lidar com cronjobs que exigem acesso SSH a uma máquina diferente. Você só precisa source do arquivo correto no arquivo ~/.keychain e o cronjob poderá usar qualquer tecla que você tenha configurado.

Observação : Isso funcionará mesmo se você efetuar logout, mas isso não ocorrerá se você reiniciar o sistema ou eliminar o agente. Agora existe uma maneira de manter uma chave aberta se o agente estiver inoperante, a menos que você armazene a senha em um arquivo. Obviamente, isso derrotaria todo o propósito das chaves protegidas por senha.

    
por 23.05.2011 / 03:53
-1

Você pode usar ssh-copy-id para copiar sua chave pública para a máquina remota. Se você não adicionou uma senha ao fazer ssh-keygen , ela não solicitará uma senha sempre que você fizer ssh naquela máquina remota.

Assim, os passos serão algo como:

local$ ssh-keygen -t dsa
local$ ssh-copy-id remote
local$ ssh remote
    
por 29.04.2011 / 14:10