Então você está pronto para tentar uma alternativa ao cliente do OpenSSH?
Bom para você. lsh
www.gnu.org/s/lsh/ é uma alternativa do GNU que pode
trabalhar com o servidor do OpenSSH. Infelizmente isso não é fácil.
Assumimos que você pode ssh
ao host local que executa o OpenSSHD. Sua primeira tentativa é:
$ lsh localhost
No seed file. Please create one by running
lsh-make-seed -o "/home/tange/.lsh/yarrow-seed-file".
lsh: No randomness generator available.
Então, vamos criar esse arquivo:
$ mkdir .lsh
$ lsh-make-seed -o "/home/tange/.lsh/yarrow-seed-file"
lsh-make-seed: Reading system state...
lsh-make-seed: Got 150 bits of entropy from system state.
lsh-make-seed: Please type some random data. You better do this
lsh-make-seed: when connected directly to a console, typing over
lsh-make-seed: the network provides worse timing information, and
lsh-make-seed: more opportunities for eavesdropping.
----------------------------------------
........................................
lsh-make-seed: Got 182 keystrokes, estimating 200 bits of entropy.
lsh-make-seed: You can stop typing now.
Agora parece muito estúpido para mim que lsh
não use
/dev/urandom
e só volta a digitar em sistemas que não possuem
isso.
$ lsh localhost
lsh: Failed to open '/home/tange/.lsh/host-acls' for reading (errno = 2): No such file or directory
lsh: Protocol error: Algorithm negotiation failed.
Isso ocorre porque lsh
escolheu uma cifra incompatível quando usada com um OpenSSHD recente. Use -c aes256-ctr
- não sei por que não faz isso automaticamente:
$ lsh -c aes256-ctr localhost
lsh: Failed to open '/home/tange/.lsh/host-acls' for reading (errno = 2): No such file or directory
lsh: Server's hostkey is not trusted. Disconnecting.
lsh: Protocol error: Bad server host key
Melhor, mas não é bom o suficiente. Ao tornar lsh
menos paranóico, você pode entrar:
$ lsh -c aes256-ctr --sloppy-host-authentication localhost
lsh: Failed to open '/home/tange/.lsh/host-acls' for reading (errno = 2): No such file or directory
Received unauthenticated key for host localhost
Key details:
Bubble Babble: xitem-suten-vedyd-hibuv-naril-nisog-luvet-dagik-negem-kykeb-bexyx
Fingerprint: 4b:9f:4b:4d:10:6b:09:2b:be:ee:df:48:a0:75:d3:9a
Do you trust this key? (y/n) y
Last login: Mon Dec 7 08:11:58 2015 from 192.168.1.103
$
Você pode fazer lsh
adicionar este hostkey às teclas confiáveis:
$ lsh -c aes256-ctr --sloppy-host-authentication --capture-to ~/.lsh/host-acls localhost
Received unauthenticated key for host localhost
Key details:
Bubble Babble: xitem-suten-vedyd-hibuv-naril-nisog-luvet-dagik-negem-kykeb-bexyx
Fingerprint: 4b:9f:4b:4d:10:6b:09:2b:be:ee:df:48:a0:75:d3:9a
Do you trust this key? (y/n) y
Password for tange:
Last login: Fri Jan 8 12:46:57 2016 from localhost
$
E então você pode usar lsh
com o login normal da senha:
$ lsh -c aes256-ctr localhost
Password for tange:
Last login: Fri Jan 8 12:48:36 2016 from localhost
$
Para autorizar uma chave do cliente, converta a chave no formato OpenSSH e anexe-a a .ssh/authorized_keys
:
$ lsh-keygen | lsh-writekey
xxxxxx
xxxxxx
Enter new passphrase:
Again:
$ lsh-export-key --openssh < ~/.lsh/identity.pub | lsh -c aes256-ctr localhost 'cat >>.ssh/authorized_keys'
Passphrase for key 'tange@hk':
Password for tange:
Agora você pode usar sua chave lsh
para se conectar a um servidor OpenSSH. Para evitar a inserção de senhas, não criptografe sua chave de cliente:
$ lsh-keygen | lsh-writekey -c none
xxxxxx
xxxxxx
$ lsh-export-key --openssh < ~/.lsh/identity.pub | lsh -c aes256-ctr localhost 'cat >>.ssh/authorized_keys'
Password for tange:
$ lsh -c aes256-ctr localhost
Last login: Fri Jan 8 12:48:40 2016 from localhost
$