Servidor SSH: mudanças entre as edições
(10 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 15: | Linha 15: | ||
O cliente e o servidor SSH se comunicam utilizando como camada de transporte o '''protocolo TCP''' e o servidor fica aguardando por pedidos de conexão na '''porta 22'''. | O cliente e o servidor SSH se comunicam utilizando como camada de transporte o '''protocolo TCP''' e o servidor fica aguardando por pedidos de conexão na '''porta 22'''. | ||
==Instalação do servidor SSH== | |||
Para instalar o '''servidor SSH''', digite: | Para instalar o '''servidor SSH''', digite: | ||
sudo apt | sudo apt install openssh-server | ||
A configuração do servidor SSH é mantida no arquivo: | A configuração do servidor SSH é mantida no arquivo: | ||
Linha 27: | Linha 27: | ||
:Se o serviço estiver ativo, o processo '''sshd''' deve estar na lista dos processos rodando. | :Se o serviço estiver ativo, o processo '''sshd''' deve estar na lista dos processos rodando. | ||
;Instalação do cliente SSH | Para reiniciar o servidor SSH: | ||
sudo systemctl restart ssh | |||
<!--;Instalação do cliente SSH | |||
O cliente SSH normalmente vem instalado no Linux, mas pode ser instalado com: | O cliente SSH normalmente vem instalado no Linux, mas pode ser instalado com: | ||
sudo apt | sudo apt install openssh-client | ||
A configuração do cliente SSH é mantida no arquivo: | A configuração do cliente SSH é mantida no arquivo: | ||
/etc/ssh/ssh_config | /etc/ssh/ssh_config | ||
--> | |||
== scp (''secure copy'')== | == scp (''secure copy'')== | ||
Linha 55: | Linha 49: | ||
:Obs: No exemplo acima o arquivo será copiado diretamente do diretório /caminho (usar preferencialmente caminho absoluto). O "." indica que o arquivo será copiado no diretório corrente do terminal do cliente. | :Obs: No exemplo acima o arquivo será copiado diretamente do diretório /caminho (usar preferencialmente caminho absoluto). O "." indica que o arquivo será copiado no diretório corrente do terminal do cliente. | ||
==Executar aplicativos gráficos via SSH== | <!--==Executar aplicativos gráficos via SSH== | ||
É possível executar aplicativos gráficos via SSH fazendo alguns ajustes na configuração do servidor: | É possível executar aplicativos gráficos via SSH fazendo alguns ajustes na configuração do servidor: | ||
vim /etc/ssh/sshd_config | vim /etc/ssh/sshd_config | ||
: | :Verifique se a linha no arquivo sshd_config está configurada como: | ||
X11Forwarding yes | X11Forwarding yes | ||
:Reinicie o serviço: | :Reinicie o serviço: | ||
Linha 66: | Linha 58: | ||
:Conecte-se ao servidor via SSH usando: | :Conecte-se ao servidor via SSH usando: | ||
ssh -X -C user@endereçoServidor | ssh -X -C user@endereçoServidor | ||
:Chame o aplicativo normalmente. | :Chame o aplicativo normalmente.--> | ||
==SSH com chaves de autenticação== | ==SSH com chaves de autenticação== | ||
Linha 75: | Linha 67: | ||
===Geração de chaves de autenticação pública=== | ===Geração de chaves de autenticação pública=== | ||
As '''chaves de autenticação''' utilizam diferentes algoritmos para | As '''chaves de autenticação''' utilizam diferentes algoritmos para criptografar suas chaves, como o RSA1, RSA, DSA ou ECDSA. | ||
Dentre os diversos algoritmos para criptografar as chaves, o '''RSA''' (''Rivest-Shamir-Adleman'') é considerado um dos mais seguros e também o mais utilizado hoje em dia, possibilitando autenticar e transmitir dados criptografados até o seu destino. | |||
As '''chaves de autenticação RSA''' são gerada utilizando a seguinte sequência de comandos <ref>ALENCAR, M. SSH com chave de autenticação pública, 2011. http://www.vivaolinux.com.br/dica/SSH-com-chave-de-autenticacao-publica </ref>: | As '''chaves de autenticação RSA''' são gerada utilizando a seguinte sequência de comandos <ref>ALENCAR, M. SSH com chave de autenticação pública, 2011. http://www.vivaolinux.com.br/dica/SSH-com-chave-de-autenticacao-publica </ref>: | ||
Gerar as '''chaves de autenticação''' no cliente com o comando '''ssh-keygen''', utilizando a conta de usuário que será utilizada para acessar o servidor remoto: | ;Passo 1: Gerar as '''chaves de autenticação''' no cliente com o comando '''ssh-keygen''', utilizando a conta de usuário que será utilizada para acessar o servidor remoto: | ||
ssh-keygen -t rsa | ssh-keygen -t rsa | ||
:*Deixe todos o campo de '''senha''' | :*Deixe todos o campo de '''senha em branco''' e pressione apenas 'ENTER' até que volte ao terminal. | ||
:*Este comando vai gerar os arquivos '''id_rsa''' ('''chave de autenticação privada''') e '''id_rsa.pub''' ('''chave de autenticação pública''') no diretório '''~/.ssh/'''. | :*Este comando vai gerar os arquivos '''id_rsa''' ('''chave de autenticação privada''') e '''id_rsa.pub''' ('''chave de autenticação pública''') no diretório '''~/.ssh/'''. | ||
;Passo 2: Copiar a '''chave de autenticação pública''' para o servidor, o que pode ser feito com o comando '''ssh-copy-ip''': | |||
Copiar a '''chave de autenticação pública''' para o servidor, o que pode ser feito com o comando '''ssh-copy-ip''': | |||
ssh-copy-id -i ~/.ssh/id_rsa.pub user@endereçoServidor | ssh-copy-id -i ~/.ssh/id_rsa.pub user@endereçoServidor | ||
:*O comando '''ssh-copy-ip''' inclui a chave pública '''id_rsa.pub''' dentro do arquivo de chaves autorizadas ('''./ssh/authorized_keys''') no servidor. | :*O comando '''ssh-copy-ip''' inclui a chave pública '''id_rsa.pub''' dentro do arquivo de chaves autorizadas ('''./ssh/authorized_keys''') no servidor. | ||
:*Com isto, o cliente passa a ter acesso ao servidor remoto sem a necessidade de digitar a senha. | :*Com isto, o cliente passa a ter acesso ao servidor remoto sem a necessidade de digitar a senha. | ||
O arquivo '''.ssh/id_rsa.pub''' é composto por uma única linha, que contém a '''chave de autenticação pública''' e a identificação do usuário e da máquina cliente. | :O arquivo '''.ssh/id_rsa.pub''' é composto por uma única linha, que contém a '''chave de autenticação pública''' e a identificação do usuário e da máquina cliente. | ||
;Teste do funcionamento: Transferir um arquivo do cliente ao servidor usando o comando scp: | |||
Transferir um arquivo do cliente ao servidor usando o comando scp: | |||
scp arquivo user@endereçoServidor:. | scp arquivo user@endereçoServidor:. | ||
===SSH com login automático=== | ===SSH com login automático=== |
Edição atual tal como às 20h09min de 23 de fevereiro de 2022
Servidor Remoto SSH
Um servidor pode ser acessado remotamente através da aplicação de acesso remoto SSH (Secure Shell).
A aplicação de SSH é uma aplicação cliente/servidor, na qual um programa cliente, através de um terminal, poderá fazer um login remoto no servidor.
O programa do lado cliente é diferente do programa do lado servidor, pois no servidor a aplicação de acesso remoto deve estar ativa e aguardando conexões por parte dos clientes.
O SSH possibilita acesso remoto seguro, através do uso de criptografia na conexão entre o cliente e o servidor.
O cliente e o servidor SSH se comunicam utilizando como camada de transporte o protocolo TCP e o servidor fica aguardando por pedidos de conexão na porta 22.
Instalação do servidor SSH
Para instalar o servidor SSH, digite:
sudo apt install openssh-server
A configuração do servidor SSH é mantida no arquivo:
/etc/ssh/sshd_config
Para verificar se o serviço de acesso remoto com SSH está ativo, digite:
ps -aux|grep ssh
- Se o serviço estiver ativo, o processo sshd deve estar na lista dos processos rodando.
Para reiniciar o servidor SSH:
sudo systemctl restart ssh
scp (secure copy)
Com o acesso remoto via SSH ao servidor é possível ao cliente copiar arquivos do cliente para o servidor, e vice-versa, com o comando scp:
- Cópia de arquivos do cliente para o servidor, por exemplo:
scp arquivo user@endereçoServidor:.
- Obs: No exemplo acima pode-se especificar um caminho para o arquivo. O "." indica que o arquivo será copiado para o diretório /home do usuário.
- Cópia de arquivos do servidor para o cliente, por exemplo:
scp user@endereçoServidor:/caminho/arquivo .
- Obs: No exemplo acima o arquivo será copiado diretamente do diretório /caminho (usar preferencialmente caminho absoluto). O "." indica que o arquivo será copiado no diretório corrente do terminal do cliente.
SSH com chaves de autenticação
Um servidor SSH pode ser acessado sem que seja necessário digitar uma senha na hora do acesso. Para tal o SSH oferece a possibilidade de utilizar um par de chaves de autenticação, na qual uma chave de autenticação pública é instalada no servidor que será acessado e uma chave de autenticação privada é mantida na máquina cliente.
O acesso ao servidor com chaves de autenticação é útil, por exemplo, quando queremos que um script transfira dados entre um computador e outro para realizar backup usando um servidor remoto.
Geração de chaves de autenticação pública
As chaves de autenticação utilizam diferentes algoritmos para criptografar suas chaves, como o RSA1, RSA, DSA ou ECDSA.
Dentre os diversos algoritmos para criptografar as chaves, o RSA (Rivest-Shamir-Adleman) é considerado um dos mais seguros e também o mais utilizado hoje em dia, possibilitando autenticar e transmitir dados criptografados até o seu destino.
As chaves de autenticação RSA são gerada utilizando a seguinte sequência de comandos [1]:
- Passo 1
- Gerar as chaves de autenticação no cliente com o comando ssh-keygen, utilizando a conta de usuário que será utilizada para acessar o servidor remoto:
ssh-keygen -t rsa
- Deixe todos o campo de senha em branco e pressione apenas 'ENTER' até que volte ao terminal.
- Este comando vai gerar os arquivos id_rsa (chave de autenticação privada) e id_rsa.pub (chave de autenticação pública) no diretório ~/.ssh/.
- Passo 2
- Copiar a chave de autenticação pública para o servidor, o que pode ser feito com o comando ssh-copy-ip:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@endereçoServidor
- O comando ssh-copy-ip inclui a chave pública id_rsa.pub dentro do arquivo de chaves autorizadas (./ssh/authorized_keys) no servidor.
- Com isto, o cliente passa a ter acesso ao servidor remoto sem a necessidade de digitar a senha.
- O arquivo .ssh/id_rsa.pub é composto por uma única linha, que contém a chave de autenticação pública e a identificação do usuário e da máquina cliente.
- Teste do funcionamento
- Transferir um arquivo do cliente ao servidor usando o comando scp:
scp arquivo user@endereçoServidor:.
SSH com login automático
Quando se usa chaves de autenticação, geradas sem senha como sugerido anteriormente, é possível acessar remotamente os servidores SSH sem a necessidade de digitar senhas. Esta é uma opção interessante quando se faz acesso frequente a servidores remotos [2].
Caso as chaves de autenticação sejam geradas com senha, também é possível salvar as senhas na memória para não precisar digita-las a casa acesso. Isto pode ser realizado com os comandos:
ssh-agent ssh-add
- O comando vai solicitar a senha para as chaves RSA e guardá-las na memória.
Referências
- ↑ ALENCAR, M. SSH com chave de autenticação pública, 2011. http://www.vivaolinux.com.br/dica/SSH-com-chave-de-autenticacao-publica
- ↑ MORIMOTO, C. E. Seridores Linux: Guia prático, Sul Editores, Porto Alegre, 2013.
--Evandro.cantu (discussão) 13h58min de 16 de novembro de 2015 (BRST)