Introduction
OpenSSH is a powerful collection of tools for the remote control of, and transfer of data between, networked computers. Você também irá aprender sobre algumas das configurações possíveis com a aplicação do servidor OpenSSH e como alterá-las no seu sistema Ubuntu.
OpenSSH é uma versão livremente disponível da família de protocolos Secure Shell (SSH) de ferramentas para controle remoto, ou transferência de arquivos entre computadores. Ferramentas tradicionais usadas para realizar essas funções, como telnet ou rcp, são inseguras e transmitem a senha do usuário em cleartext quando usado. O OpenSSH fornece um servidor e ferramentas de cliente para facilitar operações de controle remoto e transferência de arquivos seguras e criptografadas, substituindo efetivamente as ferramentas legadas.
o componente do servidor OpenSSH, o sshd, ouve continuamente as conexões do cliente a partir de qualquer uma das ferramentas do cliente. Quando uma solicitação de conexão ocorre, o sshd configura a conexão correta, dependendo do tipo de conexão da ferramenta cliente. Por exemplo, se o computador remoto estiver se conectando com a aplicação cliente ssh, o servidor OpenSSH configura uma sessão de controle remoto após autenticação. Se um usuário remoto se conecta a um servidor de OpenSSH com scp, o servidor de OpenSSH inicia uma cópia segura de arquivos entre o servidor e o cliente após a autenticação. OpenSSH pode usar muitos métodos de autenticação, incluindo senha simples, chave pública e bilhetes Kerberos.
instalação
instalação do cliente e servidor OpenSSH é simples. Para instalar o OpenSSH cliente de aplicações no seu sistema Ubuntu, use este comando em um prompt de terminal:
sudo apt install openssh-client
Para instalar o OpenSSH server aplicativo e os arquivos de suporte relacionados, use este comando em um prompt de terminal:
sudo apt install openssh-server
Configuração
Você pode configurar o comportamento padrão do servidor OpenSSH aplicação, sshd, editando o arquivo /etc/ssh/sshd_config
. Para obter informações sobre as diretivas de configuração usados neste arquivo, você pode visualizar o manual apropriado página com o seguinte comando, emitido em um prompt de terminal:
man sshd_config
Existem muitas diretivas no arquivo de configuração do sshd controlar coisas como configurações de comunicação e modos de autenticação. A seguir estão exemplos de diretivas de configuração que podem ser alteradas editando o arquivo /etc/ssh/sshd_config
.
Tip
Antes de editar o ficheiro de configuração, deve fazer uma cópia do ficheiro original e protegê-lo da escrita, para que tenha a configuração original como referência e reutilize conforme necessário.
Copiar
/etc/ssh/sshd_config
arquivo e protegê-lo de escrita com os seguintes comandos, emitido em um prompt de terminal:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.originalsudo chmod a-w /etc/ssh/sshd_config.original
Além disso, desde a perda de um servidor ssh pode significar perder o seu caminho para chegar a um servidor, verifique a configuração depois de alterá-lo e antes de reiniciar o servidor:
sudo sshd -t -f /etc/ssh/sshd_config
A seguir, são exemplos de diretivas de configuração que você pode alterar:
- Para definir o OpenSSH para escutar na porta TCP 2222, em vez de a porta TCP padrão 22, alterar a diretiva de Porta-se como tal:
Porta 2222
- Para fazer o seu servidor OpenSSH exibir o conteúdo de
/etc/issue.net
arquivo como um arquivo de pré-início de sessão de banner, basta adicionar ou modificar esta linha/etc/ssh/sshd_config
ficheiro:
Banner /etc/issue.net
Depois de fazer as alterações para o /etc/ssh/sshd_config
arquivo, salve o arquivo e reinicie o servidor sshd aplicação para efectuar as alterações usando o seguinte comando em um prompt de terminal:
sudo systemctl restart sshd.service
Aviso
Muitas outras diretivas de configuração para o sshd está disponível para alterar a aplicação de servidor do comportamento para atender às suas necessidades. Seja avisado, no entanto, se o seu único método de acesso a um servidor for o SSH, e você cometer um erro ao configurar o sshd através do
/etc/ssh/sshd_config
, você poderá descobrir que está bloqueado fora do servidor ao reiniciá-lo. Além disso, se for fornecida uma diretiva de configuração incorreta, o servidor sshd pode recusar-se a iniciar, por isso tenha cuidado extra ao editar este arquivo em um servidor remoto.
teclas SSH
SSH permitem a autenticação entre duas máquinas sem a necessidade de uma senha. A autenticação de chaves SSH usa uma chave privada e uma chave pública.
para gerar as chaves, a partir de uma linha de comandos de terminal digite:
ssh-keygen -t rsa
isto irá gerar as chaves usando o algoritmo RSA. No momento desta escrita, as chaves geradas terão 3072 bits. Você pode modificar o número de bits usando a opção -b
. Por exemplo, para gerar chaves com 4096 bits, você pode fazer:
ssh-keygen -t rsa -b 4096
durante o processo, ser-lhe-á pedida uma senha. Basta carregar em Enter quando for solicitado a criar a chave.
Por padrão, a chave pública é salvo no arquivo ~/.ssh/id_rsa.pub
enquanto ~/.ssh/id_rsa
é a chave privada. Agora copie o id_rsa.pub
arquivo para o host remoto e acrescentar à ~/.ssh/authorized_keys
digitando:
ssh-copy-id username@remotehost
por fim, verifique as permissões no authorized_keys
arquivo, somente o usuário autenticado deve ter permissões de leitura e gravação. Se as permissões não estiverem correctas, alterá-las por:
chmod 600 .ssh/authorized_keys
você deve agora ser capaz de SSH para a máquina sem ser solicitado por uma senha.
importar chaves de servidores públicos
nestes dias, muitos utilizadores já têm chaves ssh registadas com serviços como o launchpad ou o github. Esses podem ser facilmente importados com:
ssh-import-id <username-on-remote-service>
O prefixo lp:
é expressa e significa a obtenção do launchpad, a alternativa gh:
vai fazer a ferramenta de busca a partir do github em vez disso.
dois factores de autenticação com U2F/FIDO
OpenSSH 8.2 suporte adicional para dispositivos de autenticação de hardware U2F/FIDO. Estes dispositivos são usados para fornecer uma camada extra de segurança em cima da autenticação baseada em chaves existente, como o token de hardware precisa estar presente para terminar a autenticação.
é muito simples de usar e configurar. O único passo extra é gerar um novo teclado que pode ser usado com o dispositivo de hardware. Para isso, existem dois tipos-chave que podem ser usados: ecdsa-sk
e ed25519-sk
. O primeiro tem suporte de hardware mais amplo, enquanto o segundo pode precisar de um dispositivo mais recente.
Uma vez que o teclado é gerado, ele pode ser usado como você normalmente usaria qualquer outro tipo de chave no openssh. O único requisito é que para usar a chave privada, o dispositivo U2F tem que estar presente na máquina.
Por exemplo, ligar o U2F dispositivo e gerar um par de chaves para usar com ele:
$ ssh-keygen -t ecdsa-skGenerating public/private ecdsa-sk key pair.You may need to touch your authenticator to authorize key generation. <-- touch deviceEnter file in which to save the key (/home/ubuntu/.ssh/id_ecdsa_sk): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ubuntu/.ssh/id_ecdsa_skYour public key has been saved in /home/ubuntu/.ssh/id_ecdsa_sk.pubThe key fingerprint is:SHA256:V9PQ1MqaU8FODXdHqDiH9Mxb8XK3o5aVYDQLVl9IFRo ubuntu@focal
Agora basta transferir a parte pública para o servidor ~/.ssh/authorized_keys
e você está pronto para ir:
$ ssh -i .ssh/id_ecdsa_sk [email protected] user presence for key ECDSA-SK SHA256:V9PQ1MqaU8FODXdHqDiH9Mxb8XK3o5aVYDQLVl9IFRo <-- touch deviceWelcome to Ubuntu Focal Fossa (GNU/Linux 5.4.0-21-generic x86_64)(...)[email protected]:~$