SSH – CentOS 6.5

O protocolo SSH (Secure Shell) deve ser o serviço de rede mais fácil de ser configurado em sistemas Linux, ele é ao mesmo tempo um programa e um protocolo. Com o SSH é possível executar comandos em uma unidade remota. O SSH faz parte da suíte de protocolos TCP/IP que torna segura a administração remota de servidores do tipo Unix. O SSH possui as mesmas funcionalidades do TELNET, com a vantagem da criptografia na conexão entre o cliente e o servidor. Por padrão o SSH utiliza a porta 22 para suas conexões.
Vamos instalar:

# yum search openssh | egrep -i ‘server|client’ | grep -i ^o | grep -v ldap 
openssh-clients.i686 : An open source SSH client applications
openssh-server.i686 : An open source SSH server daemon
# yum install -y openssh-clients.i686 openssh-server.i686

Após a instalação podemos verificar que os pacotes já estão no sistema:

# rpm -qa | grep -i openssh | egrep ‘client|server’
openssh-server-5.3p1-104.el6_6.1.i686
openssh-clients-5.3p1-104.el6_6.1.i686

# which ssh
/usr/bin/ssh

O SSH assim como vários outros serviços de rede opera sobre um daemon, no CentOS 6.5 podemos verificar com o comando:

# service sshd status
openssh-daemon está parado

Agora vamos configurá-lo:

# rpm -qa | grep -i openssh-server
openssh-server-5.3p1-104.el6_6.1.i686
# rpm -ql openssh-server-5.3p1-104.el6_6.1.i686 | grep -i conf
/etc/ssh/sshd_config
/etc/sysconfig/sshd
/usr/share/man/man5/sshd_config.5.gz

Vamos alterar o arquivo /etc/ssh/sshd_config:

Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
ListenAddress  

Vamos descomentar a diretiva Port e adicionar o respectivo endereço da máquina na diretiva ListenAddress. Uma boa prática aqui é observar no arquivo se a diretiva PermitRootLogin yes está comentada. Essa diretiva é a responsável por login’s remotos do usuário root, por medidas de segurança é recomendado deixá-la comentada.

# service sshd start 

E colocamos o serviço para iniciar com o sistema:

# chkconfig sshd on

Para não perdemos a conexão remota devido a ociosidade nos logins (Broken pipe), podemos abordar duas frentes:

– Configurar o ssh do cliente;
– Configurar o ssh do servidor;

NO CLIENTE:

Configuramos o /etc/ssh/ssh_config:

Host *
  TCPKeepAlive yes
  ServerAliveInterval 120

TCPKeepAlive – Especifica se o sistema deve enviar mensagens TCP keepalive para o outro lado, o padrão é yes.

ServerAliveInterval – Define um intervalo de tempo limite em segundos, após o qual se nenhum dado foi recebido do servidor, o ssh enviará uma mensagem através do canal criptografado para solicitar uma resposta do servidor. O padrão é 0, indicando que essas mensagens não serão enviadas para o servidor.

NO SERVIDOR:

No /etc/ssh/sshd_config:

ClientAliveInterval 600
ClientAliveCountMax 0

ClientAliveInterval – Indica o tempo limite em segundos. Após x número de segundos, o servidor ssh enviará uma mensagem ao cliente solicitando resposta. Deafult é 0. (servidor não enviará mensagem ao cliente para verificar.). No exemplo o cliente ssh saiará automaticamente (timeout) após 10 minutos (600 segundos).

ClientAliveCountMax – Indica o número total de mensagem de checkalive enviada pelo servidor ssh sem obter nenhuma resposta do cliente ssh. O padrão é 3.

ServerAliveInterval: Indica o número de segundos que o cliente aguardará antes de enviar um pacote nulo para o servidor para manter a conexão ativa.

Referência:
https://linux.die.net/man/5/sshd_config