servidor remoto ssh em alguma porta diferente de 22 sem senha

16

Normalmente, estou me conectando ao servidor remoto com

ssh [email protected] -p 11000

e, em seguida, fornecendo a senha sempre para o usuário. Como devo evitar digitar a senha toda vez que me conectar usando ssh?

Prabesh Shrestha
fonte

Respostas:

23

Primeiro , coloque isso em ~/.ssh/config:

Host server
HostName server.com
Port 11000
User user

Você será capaz de ssh serverdigitar a senha.

Segundo , verifique ~/.ssh/se você possui arquivos com o nome id_rsae id_rsa.pub. Caso contrário, você não tem nenhuma chave configurada, então você deve gerar um par usando ssh-keygen. Você pode dar uma senha às chaves ou não. O arquivo gerado id_rsa.pubdeve ficar assim:

ssh-rsa lotsofrandomtext usuário @ local

Terceiro , ssh para o servidor, crie o arquivo ~/.ssh/authorized_keysse ele não existir. Em seguida, anexe o conteúdo do ~/.ssh/id_rsa.pubque você gerou anteriormente aqui. Isso pode significar copiar o conteúdo do arquivo para a área de transferência, abrir ~/.ssh/authorized_keysem um editor de texto e colar o conteúdo .

Como alternativa, use o comando ssh-copy-id server(substitua serverpelo nome em ~/.ssh/config). Isso fará o mesmo que acima. Às vezes eu vi ssh-copy-idficar preso, então eu realmente não gosto disso.

Agora você deve poder ssh apenas ssh server, a menos que tenha escolhido proteger sua chave privada com uma senha. Geralmente, se você não usa uma senha, deve proteger sua chave privada por outros meios (por exemplo, criptografia de disco completo).

Quarto (necessário apenas se você proteger sua chave privada com uma senha), coloque isso em~/.bashrc :

start_ssh_agent() {
    # Try to use an existing agent
    save=~/.ssh-agent
    if [[ -e "$save" ]]
    then
        . "$save" > /dev/null
    fi
    # No existing agent, start a new one
    if [[ -z "$SSH_AGENT_PID" || ! -e "/proc/$SSH_AGENT_PID" ]]
    then
        ssh-agent > "$save"
        . "$save" > /dev/null
        ssh-add
    fi
}
start_ssh_agent

Com isso, você precisará digitar a senha apenas uma vez por inicialização do computador.

phunehehe
fonte
2
A 'narrativa' também deve incluir uma discussão sobre como evitar digitar essa frase chata o tempo todo. :-) ssh-agent e / ou keychain são possibilidades a serem consideradas.
Faheem Mitha
1
Além disso, se o seu nome de usuário no host remoto não for igual ao seu nome de usuário no host local, você poderá adicionar uma User userlinha a ~/.ssh/config.
CJM
@Faheem Isso é bom, mas eu nunca configurar tal coisa, então eu não acho que eu estou em uma posição para instruir outros sobre ele :)
phunehehe
@FaheemMitha there you go :)
phunehehe
Ei, antes tarde do que nunca.
Faheem Mitha
7

Mude para autenticação baseada em chave .

9000
fonte
obrigado pela sugestão. Eu estava olhando os fóruns, mas estava tendo problemas com a porta ( 11000 em vez de 22 ). Com ssh -P 11000eu era capaz de copiar com ssh. Muito Obrigado.
Prabesh Shrestha
4

Como complemento à resposta do phunehehe, consulte o Guia de Chaves do Gentoo Linux para obter um guia de chaves . keychain também usa ssh-agent . O daemon ssh-agent disponibiliza a senha (ela fica indisponível quando o daemon ssh-agent morre), mas o chaveiro reuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in, para citar o guia.

Faheem Mitha
fonte