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