quinta-feira, 21 de novembro de 2019

Como forçar o APT a usar IPv4

Para forçar o APT a usar IPv4 no Ubuntu e similares, abra o terminal (o atalho é Ctrl + Alt + T).
Os comandos serão dados como root, isto é, você tem que logar como root ou usar sudo.

Assim podemos forçar o APT a usar IPv4:

1- Para atualizar a lista de repositórios:
$ sudo apt-get -o Acquire::ForceIPv4=true update
2- Para atualizar o sistema:
$ sudo apt-get -o Acquire::ForceIPv4=true upgrade
3- instalar algum pacote:
$ sudo apt-get -o Acquire::ForceIPv4=true install nome-do-pacote

Note que você sempre terá que colocar a opção nos comandos acima.
Contudo se você quiser fazer com que essas mesmas instruções sejam executadas sempre que o sistema for iniciado, precisamos adicionar uma linha em  /etc/apt/apt.conf.d/99force-ipv4, utilizando a linha de comando abaixo:
$ echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4



Forçar o cliente SSH a usar autenticação por senha em vez de chave pública

Eu estava precisando conectar em um computador via SSH, contudo meu cliente só tentava fazer a conexão utilizando as chaves de criptografia, contudo eu não tinha a chave do servidor, somente usuário e senha.
Assim eu precisava forçar o cliente SSH a conectar usando autenticação de senha e negar explicitamente a autenticação de chave pública.
Isto pode ser feito acrescentando alguns parâmetros à chamada SSH mostrados abaixo.
Note que no meu caso eu precisava informar a porta de conexão usando -p 22222. Se seu servidor usa a porta padrão (22) pode omitir esta parte.

ssh -p 22222 -o PreferredAuthentications=password -o PubkeyAuthentication=no usuario@servidor

Os mesmos parâmetros são validos em uma chamada para copiar arquivos usando scp (secure copy):
scp -p 22222 -o PreferredAuthentications=password -o PubkeyAuthentication=no nome_do_arquivo usuario@servidor:destino/nome_do_arquivo

quarta-feira, 20 de novembro de 2019

userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]

Se você acabou de atualizar o Ubuntu para as versões 16 ou 18, pode ser que você obtenha um erro de conexão em função da nova forma de operação do OpenSSH.
O OpenSSH quando mudou da versão v6.9 para a v7.0 recusa conexões de ssh devido a alterações no formato do arquivo de configuração.

No meu caso o seguinte erro aparecia no arquivo /var/log/auth.log do computador que eu queria conectar

sshd[6850]: userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]
sshd[6850]: error: maximum authentication attempts exceeded for root from x.x.x.x port 51702 ssh2 [preauth]
sshd[6850]: Disconnecting authenticating user root x.x.x.x port 51702: Too many authentication failures [preauth]

Para resolver este erro foi preciso editar o arquivo /etc/sshd_config e acrescentar a seguinte linha no final do arquivo de configuração:

PubkeyAcceptedKeyTypes=+ssh-dss

Agora foi só reiniciar o ssh usando service ssh restart, e a conexão passou a ser reconhecida.
Esta configuração vale para todos os usuários.
Você pode acrescentar esta linha em  ~/.ssh/config para o usuário local.

Instalando pacote deb do virtualbox no Ubuntu 18 (minimal)

Neste post vou mostrar como instalar o virtualbox no Ubuntu usando o terminal
Começamos baixando o arquivo .deb do site do virtualbox. Note que a versão que estou utilizando é 6.0_6.0.14-133895. A sua pode ser diferente e portanto a URL também. Dê uma olhada no site.
$ wget -c https://download.virtualbox.org/virtualbox/6.0.14/virtualbox-6.0_6.0.14-133895~Ubuntu~bionic_amd64.deb
$ wget -c https://download.virtualbox.org/virtualbox/6.0.14/Oracle_VM_VirtualBox_Extension_Pack-6.0.14.vbox-extpack
Tendo baixado o arquivo .deb, podemos instalá-lo usando dpkg.
$ sudo dpkg -i virtualbox-6.0_6.0.14-133895~Ubuntu~bionic_amd64.deb
Você irá notar alguns erros relacionados à mensagem "Os pacotes a seguir têm dependências desencontradas". Isto pode ser resolvido com o comando abaixo.
$ sudo apt install -f
O resultado deste comando pode ser outra mensagem de erro: "This system is currently not set up to build kernel modules.". Isto pode ser resolvido com a instalação de pacotes virtuais que instalam as ferramentas necessárias para construção do kernel. O comando é mostrado abaixo.
$ sudo apt install virtualbox-guest-utils virtualbox-guest-dkms
Terminada a instalação, precisamos utilizar o comando abaixo que irá finalizar a instalação, compilando os módulos de kernel do virtualbox, e também iniciando o serviço.
$sudo /sbin/vboxconfig


           sudo /sbin/vboxconfig

quarta-feira, 6 de novembro de 2019

Alterar o tamanho do arquivo de swap no linux

Se você tem um arquivo de swap que está pequeno, você pode alterar o tamanho dele.
São poucos passos, mas você precisa que sua máquina esteja rodando com nenhum swap no momento da alteração porque você precisa desligar o swap no arquivo que irá mexer.


O primeiro passo então é desligar o swap no arquivo:



sudo swapoff /swapfile


Precisamos fazer com que o arquivo tenha o tamanho desejado.
Vou mostrar aqui 2 formas de fazer isto.

1- Utilizamos o dd para aumentar o tamanho do arquivo de swap (isto demora um pouco):

sudo dd if=/dev/zero of=/swapfile bs=1M count=14336 oflag=append conv=notrunc

Meu arquivo original é de 2GB e quero trocá-lo para 16GB.
Assim o comando acima adiciona 14GB no arquivo. Este valor está definido em count == 14 * 1024.
Os bytes adicionados ao final do arquivo estarão zerados (pois vêm de /dev/zero).

2- Ou utilizar o comando fallocate, contudo ele não retém o conteúdo antigo do swap

sudo fallocate -l 16G /swapfile


Agora basta recriar e ativar o swap usando o arquivo expandido:

sudo mkswap /swapfile
sudo swapon /swapfile




Abaixo um exemplo da execução destes comandos para que vocês vejam as mensagens retornadas por cada um.


Desabilitar ModemManager no Ubuntu

 ModemManager provides a unified, high-level interface to control all kinds of modems: 4G/5G modems (LTE/NR) 3G modems NB-IoT / Cat-M1 modul...