Eu tenho um servidor que eu tenho que acessar freqüentemente via ssh, porque eu computo nele. Agora, o centro de computação proíbe explicitamente as chaves SSH porque elas são "inseguras". Eles acham que digitar minha senha, em um teclado, sempre que possível na frente de outros seres humanos, é uma maneira muito mais segura de fazer login.
Agora; Não posso mudar de idéia (tentei).
Existe uma maneira de, pelo menos, armazenar temporariamente senhas SSH, a maneira como o GIT pode armazenar senhas em um cache por um tempo definido?
the computing center explicitly forbids SSH-keys because they are "insecure"
- minha opinião sobre o assunto? Encontre um novo host de servidor, porque o seu é obviamente inepto.publickey
autenticação. Se você desabilitar apassword
autenticação no servidor, evita que todos os invasores tentem adivinhar senhas. E se um invasor tentar um ataque mitm contra um cliente que não armazenou anteriormente a chave pública do servidor, você estará muito melhor protegido dopublickey
que se estivesse usandopassword
autenticação.Respostas:
Reutilização de conexão
O SSHv2 permite que a mesma conexão autenticada estabeleça vários 'canais' - shell interativo, comando em lote, SFTP, junto com os secundários, como encaminhamento de agente ou encaminhamento de TCP. Seu servidor provavelmente suporta multiplexação de conexão por padrão. (Se os seus administradores reclamarem, ele não está armazenando sua senha em nenhum lugar - está armazenando toda a conexão.)
Com o OpenSSH, você tem
ControlMaster
eControlPath
opções (-M e -S) para fazer uso disso:Inicie uma conexão SSH 'master' usando
-M
. (Como você ainda não possui um ControlPath em sua configuração, é necessário especificá-lo na linha de comando-S
. Ele precisa durar muito, então eu adiciono as-fN
opções para voltar ao segundo plano; elas são tecnicamente opcionais caso contrário.)Você voltou ao shell local.
Inicie uma nova conexão através do mestre:
Você está dentro.
Para tornar isso útil para o Git / rsync / SFTP, você precisa definir
ControlPath
sua configuração, porque não poderá especificar-S
o tempo todo:Você pode automatizar isso - as versões recentes do OpenSSH também possuem o
ControlPersist
que estabelece automaticamente uma conexão mestre em segundo plano, se ainda não houver uma. Isso permite que você pule a etapa 1 e use o ssh como faria normalmente.Configuração em
~/.ssh/config
:A primeira conexão solicita a senha:
O segundo não:
Para controlar o mestre multiplex (pare ou configure os encaminhamentos TCP), use a
-O
opçãoUm método semelhante é suportado pelas versões recentes do PuTTY .
fonte
Usar
sshpass
O sshpass ( github , página de manual ) é uma ferramenta que alimenta automaticamente a senha do ssh. A maneira segura de usá-lo é esta:
Isso lerá a senha
~/.ssh/compute_password
, como um arquivo de chave privada sem senha. Você pode colocar osshpass
comando em um pequeno script de shell ou um alias de shell para evitar digitar esse comando completo. Infelizmente, não encontrei uma maneira de fazer isso~/.ssh/config
.(Também é possível especificar a senha diretamente na linha de comando
sshpass
, mas isso deve ser evitado, pois vaza a senha para qualquer pessoa que possa fazerps
)Comparação com outros métodos
É claro que essa abordagem é menos segura do que configurar corretamente a autenticação de chave pública, mas você provavelmente já sabe disso.
Também é menos seguro do que a resposta do @ grawity sobre a reutilização da conexão, mas tem a vantagem de não precisar digitar a senha de maneira interativa.
Você pode considerar a resposta do @ grawity como uma alternativa ao auth do pubkey com uma senha e cache de chave privada (ou seja
ssh-agent
). Então minha resposta seria uma alternativa à autenticação pubkey sem uma senha no arquivo da chave privada.fonte
head -c 16 /dev/urandom | base64
128 bits) e não a usar em outros sistemas, será semelhante à chave em termos de segurança. Tão difícil quanto a força bruta e simples de usar a partir do arquivo, se não criptografado. Isso vale para o bandido também, se eles conseguirem o arquivo. A única diferença é que a senha é enviada para o servidor como está, enquanto as chaves têm melhores cálculos para provar que você possui a chave privada correta sem revelá-la e, quanto à usabilidade, é mais difícil criptografar o arquivo que contém a senha (não ferramentas padrão).Use o gerenciador de senhas.
Alguns gerenciadores de senhas (por exemplo, KeePassXC) possuem o recurso 'tipo automático'. Você armazena a senha no gerenciador de senhas, desbloqueia o banco de dados ao executá-lo e sempre que
ssh
solicita sua senha, pressiona uma combinação de teclas que faz com que o gerenciador de senhas grave sua senha longa no console.Não é necessário copiar, lembre-se de qualquer coisa (exceto a senha para desbloquear o banco de dados) e você pode ter uma senha forte sem esmagar esses 30 caracteres toda vez que tentar fazer login.
Você pode escolher o seu favorito desta lista: https://en.wikipedia.org/wiki/List_of_password_managers
fonte
gnome-terminal
altera seu título parassh somehost
quando ssh me pede uma senha para que você possa combinar a janela do título sem problemas. Não sei nada sobre os recursos de 'anti-keylogging' - estou usando o KeePassXC no terminal diariamente e o pior com o qual tenho que lidar é escolher a conta apropriada da lista.Outra alternativa é usar um cliente ssh da GUI. No Windows, a escolha óbvia seria PuTTY . Há também uma versão Linux do PuTTY, principalmente a maioria das distribuições baseadas no Debian como o Ubuntu normalmente incluem o PuTTY em seu repositório.
Outro cliente realmente bom é o Termius . Ele suporta não apenas Windows e Linux, mas também OSX, iOS e Android. Embora tenha sido projetada principalmente para telefones, a versão para desktop é realmente muito boa.
Se não me engano, o venerável Hyperterminal no Windows também possui / possui um cliente ssh, mas eu não uso o Windows há muito tempo, por isso não tenho certeza.
Todos os clientes da GUI incluem a capacidade de salvar configurações de conexão que incluem seu nome de usuário e senha.
fonte