Estou usando o Ubuntu 11.10. Estou usando ssh
para conectar a muitos servidores diariamente, então coloquei seus parâmetros no .ssh/config
arquivo assim:
Host Home
User netmoon
Port 22
HostName test.com
Existe uma maneira de colocar senhas para cada conexão neste arquivo, para que, quando o servidor solicite a senha, o terminal insira sua senha e a envie ao servidor?
Eu preciso disso porque às vezes me afasto do PC e, quando volto, digite uma senha e pressione Entero terminal diz CONNECTION CLOSED
.
PS: Não quero usar um par de chaves pública / privada.
command-line
bash
ssh
remote-access
Netmoon
fonte
fonte
SSH_ASKPASS
.Respostas:
Negociar segurança por conveniência nunca acaba bem ...
Você poderia usar
ssh-copy-id
doopenssh-client
pacote?De
man ssh-copy-id
:fonte
Se você realmente não deseja usar um par de chaves pública / privada, pode escrever um
expect
script para inserir a senha automaticamente, dependendo do endereço de destino.Editar: O que quero dizer é que você pode ter um script que, por um lado, usa
expect
para inserir a senha para você e, por outro lado, lê a senha para um determinado usuário e host a partir de um arquivo de configuração. Por exemplo, o seguinte script python funcionará para o cenário de dia ensolarado:e o formato do arquivo de configuração seria o seguinte:
Nota: Conforme explicado, o script python precisaria ser muito mais complexo para lidar com todos os possíveis erros e mensagens de perguntas do ssh e todos os URLs possíveis (no exemplo, presume-se que será algo parecido
user@host
, mas a parte do usuário não é ' usado na maioria das vezes), mas a idéia básica ainda seria a mesma. Em relação ao arquivo de configuração, você pode usar um arquivo de configuração diferente ou usar.ssh/config
e escrever seu próprio código para analisar esse arquivo e obter a senha para um determinado usuário e host.fonte
Também existe um
sshpass
programa para isso. Como usar:sshpass -p MyPa55word ssh [email protected]
fonte
sshpass
vez desshpass
), você acabou de armazenar sua senha ("MyPa55word") no arquivo de histórico do seu shell..ssh/config
, porque não na história do shell também?brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
. Mais: gist.github.com/arunoda/7790979read -s password; sshpass -p "$password" ssh [email protected]
. Isso vai evitar que a senha de mostrar na históriaQue tal o ProxyCommand:
Você pode usar em
ssh -W
vez denc
:fonte
-W
opção Você tem alguma solução alternativa?test.com
exigir uma senha paraHome
exigir uma senha. Qual é o objetivo? Qual é o truque para fazê-lo funcionar?Não. Isso não é possível, eu tenho medo.
A única alternativa real é usar chaves privadas, mas você disse que não deseja (por que não?).
fonte
Você pode criar uma substituição simples de script ssh em / usr / local / bin:
E então no seu arquivo ~ / .ssh / config você pode usar
fonte
Eu uso um aplicativo da VanDyke Software chamado SecureCRT .
http://www.vandyke.com/products/securecrt/
Não é gratuito, mas com preços muito razoáveis. Eu o uso há anos (executando no Windows ou usando o Wine) para acesso remoto, emulação de terminal e gerenciamento de rede (disperso). Eles finalmente lançaram uma versão nativa do Linux no início de 2011.
Ele suporta configurações complexas de login (ou scripts), senhas armazenadas (ou certificados), várias sessões com guias etc.
Na inicialização, você pode escolher qual destino (e protocolo) remoto a partir de uma lista estruturada (exibição em árvore) de máquinas remotas (ou locais) armazenadas ou apenas criar uma conexão (que será armazenada).
Eu o achei particularmente útil para sites remotos com autenticação avançada, portas não padrão ou negociação de acesso por firewall.
Se você estiver acessando muito remotamente (parte de sua função principal), esse aplicativo justificará sua despesa no primeiro mês de uso.
fonte
Respondendo à pergunta que você fez, não, não é possível configurar uma senha padrão em um arquivo de configuração ssh.
Mas se, como você diz, é "porque às vezes eu me afasto do PC e, quando volto, digite uma senha e pressione Entero terminal
CONNECTION CLOSED
" , então por que não impedir o fechamento da sessão? O SSH pode manter as conexões ativas para você.fonte
Obrigado, Arek pela inspiração ...
Em vez de executar outro processo do shell, esta é apenas uma função em execução no shell bash atual. Ele executa um único
awk
comando para analisar o arquivo de configuração e descobrir se deve levar a senha de uma variável do shell ou da senha escrita em texto não criptografado no arquivo de configuração ssh (com problemasawk
em que aoeval
invés dedescribe
devido a problemas que useidescribe
).Eu tentei várias maneiras de usar
sshpass
diretamente em umssh
arquivo de configuração usando o ProxyCommand, mas nada parecia funcionar como o esperado, exceto quando eu podia fazer login em uma caixa via RSA. Mas então eu precisava enviar uma senha para abrir meu diretório criptografado. No entanto, minha função abaixo parece funcionar para mim em todos os casos, mesmo para Cygwin.Em seguida, uma
~/.ssh/config
seção fica assim:Se a
#Passvar
existir na seção de configuração, isso substituirá o#Password
.$MYPASS_ENVVAR
é a variável de ambiente que mantém sua senha.Desfrutar!
fonte
A resposta de @BrunoPereira a esta pergunta mostra um método alternativo para conectar-se sem digitar explicitamente uma senha e evitar chaves ssh.
Você pode criar um script, um alias ou uma função
~/.bashrc
para executar rapidamente esse comando.Obviamente, existem considerações de segurança que você deve levar em consideração com essa abordagem.
fonte
Aqui está minha variação elaborada da resposta de @ ArekBurdach. Oferece as seguintes extensões:
ssh
linha de comando; ou seja, também suporta assh <args> <host> <commands>
sintaxessh
ssh_config
scp
, tambémssh-wrapper
scp-wrapper
Instalação
Defina aliases no seu
~/.bashrc
:Configuração
Com a
IgnoreUnknown
diretiva,ssh
não se queixa de umaPassword
diretiva recém-introduzida , portanto (em contraste com a resposta de @ ArekBurdach), podemos fazer com que isso pareça uma configuração "real". Se você não gosta disso, é trivial alterar o script novamente para o comentado.fonte
Se você não tiver acesso direto ao par de chaves, poderá criptografar a senha na sua máquina local.
A maneira de fazer isso é criptografar sua senha usando a chave , além do ProxyCommand do @Eric Woodruff.
Uma maneira de combinar é usar pipe:
Onde
fonte
Existe uma pequena variação de uma maneira descrita no blog sobre como usar,
sshpass
que pode ser encontrada aqui . Como você tem um arquivo de senha criptografada gpg (como isso é descrito no blog), você pode fazer algo assim:e simplesmente salve esse comando como um alias no seu
.bashrc
.Se você quiser fazer um túnel através dessa conexão, poderá fazer algo como
fonte