domingo, 26 de julho de 2009

SSH sem uso de senha

Como último tópico desta série sobre SSH, vou mostrar como habilitar o ssh sem senha.

Primeiro precisamos gerar um par de chaves públicas/privadas para autenticar com chaves RSA2 ou DSA.

RSA:
ssh-keygen -t rsa
DSA:
ssh-keygen -t dsa

As chaves são gerados no $HOME do usuário que você esta utilizando para que a chave seja criada

~/.ssh/id_rsa.pub
ou
~/.ssh/id_dsa.pub

OBS.: As permissões do home do usuário e do .ssh precisa ser setada como 750 em ambos os servidores.

Depois precisamos instalar a chave pública/privada no servidor ao qual desejamos logar sem senha.

ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_server
ou
ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote_server

Podemos fazer o mesmo processo acima utilizando o comando scp.

scp ~/.ssh/id_rsa.pub user@remote_server:~/.ssh/authorized_keys
ou
scp ~/.ssh/id_dsa.pub user@remote_server:~/.ssh/authorized_keys

OBS.:
O comando acima irá instalar a chave pública local ~/.ssh/id_rsa.pub no arquivo ~/.ssh/authorized_keys do servidor remoto. Este arquivo possui o mesmo formato do arquivo ~/.ssh/know_hosts com uma chave pública por linha.
Para alterar o passphrase caso você tenho escolhido um utilizamos o comando abaixo:

ssh-keygen -p -t rsa -f ~/.ssh/id_rsa.pub
ou
ssh-keygen -p -t rsa -P old_passphrase -N new_passphrase -f ~/.ssh/id_rsa.pub

Após isso é necessário exportar a chave pública para o servidor remoto novamente.

quarta-feira, 15 de julho de 2009

SSH: X11 Forwarding

Solução aplicavel em: HP-UX, SUSE, AIX, Solaris, Red Hat, Debian

Com esta opção no SSH podemos redicionar conexão ao X Window no servidor para o servidor X local.

Ao realizar a conexão no servidor X Remoto a conexão é direcionada por default ao DISPLAY :10

Para isto realizamos a seguinte configuração nos arquivos abaixo:

Descomentar a linha no arquivo /etc/ssh/sshd_config (arquivo de configuração do servidor).

AllowX11Forwarding yes

E depois alterar o arquivo /etc/ssh/ssh_config (arquivo de configuração do cliente).

Host *

ForwardAgent yes
ForwardX11 yes

Para realizar testes logando basta seguir os passos abaixo em um cliente Linux/UNIX.

ssh servidor_remoto -X -l user

OBS.:

Se estiver utilizando o Putty como cliente é necessário fazer as seguintes configurações:

a. Instalar um servidor X local (como exemplo utilizo o Xming)

b. Marcar a opção “Enable X11 forwarding” no Putty

sábado, 11 de julho de 2009

SSH Tunnel Proxy

Aplicavel para: HP-UX, SUSE, AIX, Solaris, Red Hat, Debian

Continuando com ess série de receitas sobre o SSH, vamos ver hoje Tunnel.

O conceito é praticamento o mesmo do X11 Forward, com esta opcão do SSH direcionamos uma porta do servidor remoto para qualquer porta local.

Exemplo, para direcionar a porta 25 do servidor para a porta 3000 local mantendo a conexão por 60 segundos:

ssh -l user servidor -L3000:servidor:25 -f sleep 60

Agora basta verificar se a porta 3000 encontra-se aberta localmente.

telnet localhost 3000

OBS.:

Se estiver utilizando o Putty como cliente é necessário fazer as seguintes configurações:

a. Na opção “Source port” coloque a porta que será aberta localmente
b. Na opcão “Destination” coloque ipservidor:porta
c. Deixe as opção “Local” e “Auto” selecionadas e clique em “Add”

segunda-feira, 6 de julho de 2009

SSH timeout for connection idle

* Procedimento igual nos sistemas HP-UX, SUSE, AIX, Solaris, Red Hat e Debian

Recentimente em testes e estudos aqui em casa percebi que em alguns servidores que eu estava logando quando uma conexão ssh ficava aberta por mais de 5 minutos sem que eu tomasse nenhuma ação, a mesma se encerrava automaticamente por inatividade.

Para solucionar este problema, encontrei duas opções:

1. Configuração realizada no servidor SSH

Habilitar a seguinte configuração do arquivo /etc/ssh/sshd_config

KeepAlive yes
ClientAliveInterval 240

Isto faz com que o servidor ssh envie um “null packet” para o cliente a cada 4 minutos fazendo a conexão se manter ativa.

2. Configuração realizada no cliente SSH

No Putty por exemplo, basta setar um valor de 120 na opção “Sending of null packets to keep session active“.
Fazendo com que o Putty envie um “null packet” para o servidor a cada 2 minutos mantendo a conexão ativa novamente.