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.


segunda-feira, 28 de outubro de 2019

Fazendo automount no Raspberry

Neste post vou mostrar como configurar o Raspberry para que ele sempre monte um disco rígido (externo) conectado via USB.

Você irá precisar do pacote autofs, que pode ser instalado usando o comando abaixo:
sudo apt-get install autofs
Para saber qual é o dispositivo do seu disco rígido, você pode utilizar a saída do dmesg que irá mostrar algo semelhante ao conjunto de linhas abaixo
[  228.147834] scsi 0:0:0:0: Direct-Access     ST2000DM 001-1CH164            PQ: 0 ANSI: 2 CCS
[  228.149532] sd 0:0:0:0: [sda] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB)
[  228.150010] sd 0:0:0:0: [sda] Write Protect is off
[  228.150031] sd 0:0:0:0: [sda] Mode Sense: 00 38 00 00
[  228.150702] sd 0:0:0:0: [sda] Asking for cache data failed
[  228.150727] sd 0:0:0:0: [sda] Assuming drive cache: write through
[  228.169859]  sda: sda1
[  228.173948] sd 0:0:0:0: [sda] Attached SCSI disk
[  228.177756] sd 0:0:0:0: Attached scsi generic sg0 type 0
ou pode utilizar o fdisk com a opção -l que vai mostrar algo
$ sudo fdisk -l
Disk /dev/sda: 1,8 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: 001-1CH164      
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x04db6408

Device     Boot Start        End    Sectors  Size Id Type
/dev/sda1        2048 3907026943 3907024896  1,8T  7 HPFS/NTFS/exFAT

Configurando autofs

Por padrão, autofs monta dispositivos em /var/autofs/. 
Precisamos configurá-lo para montar os dispositivos.

1- começamos editando o arquivo /etc/auto.master e acrescentado a linha abaixo no final do arquivo. A linha inserida contem diversos campos separados por espaços. O primeiro campo é o caminho sob o qual autofs monta os dispositivos. O segundo campo indica o arquivo de configuração para esta entrada. O último campo lista as opções para este diretório. timeout indica o tempo limite mínimo até que os itens sejam desmontados.

 /mnt   /etc/auto.removable --timeout=2,sync,nodev,nosuid
2- Agora acrescentamos no arquivo de reconfiguração o disco rígido. O nome do arquivo de configuração é /etc/auto.removable neste nosso exemplo. Ele é definido no passo (1) mostrado anteriormente. Este arquivo pode ter diversas linhas. Uma para cada partição que você quiser montar. Como no nosso caso só temos uma partição, o arquivo terá somente uma linha (como mostrado abaixo). A linha é composta por diversos campos. O primeiro campo indica o ponto de montagem (local no seu filesystem onde ficará o acesso para a partição), o segundo campo tem opções (use man 5 autofs para mais detalhes) e o terceiro campo é o dispositivo a ser montado (que a gente descobriu com o fdisk).
SSD            -fstype=ntfs-3g            :/dev/sda1

4- Reinicie o autofs e a partição deve ser montada se não houve qualquer erro nos passos acima.

 sudo service autofs restart



domingo, 20 de outubro de 2019

Backup de um diretório para outro servidor utilizando SSH

Se você tem dois computadores linux é possível fazer o backup de um computador no outro utilizando um aplicativo gratuito e que é facilmente instalado.
Vou mostrar neste post como fazer isto no Ubuntu (outras distribuições o funcionamento é parecido, mas a instalação é muitas vezes diferente).
O rsync permite transferir e sincronizar dados entre computadores linux (existe uma instalação do rsync para o Windows, mas não é muito comum vê-la). O comando pode ser usado com o protocolo SSH, que criptografa a conexão e assim evita que alguém possa ler seus dados. Note que o acesso é via TCP-IP, isto significa que os computadores podem estar em dois lugares bem diferentes no mundo.
O rsync também fornece uma grande quantidade de opções que podem ser usadas, como modo de arquivamento, modo de backup, compactação de dados durante a transferência etc.
Vou mostrar aqui um exemplo simples que é normalmente o que eu utilizo.
Neste exemplo considero que o backup será feito a partir do meu computador chamado mycomp para outro computador que chamo myserver.

Instalação do rsync

A instalação no Ubuntu/Debian é feita com um comando simples mostrado abaixo. Neste nosso exemplo ele irá rodar no mycomp.

h3dema@mycomp $ sudo apt-get install rsync

Instalação do cliente SSH

Para utilizar a conexão via SSH, você irá precisar ter o cliente SSH instalado no computador que irá rodar o comando rsync. Neste nosso exemplo é o computador mycomp. Em muitas versões este cliente já está instalado, mas se não estiver use o comando abaixo para instalar

h3dema@mycomp $ apt-get install openssh-client

Vamos testar se o cliente está funcionando. Para isto utilizamos o comando abaixo. Veja que meu usuário é h3dema e meu servidor é myserver. Você deve trocar estes dois valores para o seu usuário e computador. Note que o nome do servidor pode ser o nome completo na rede, tipo myserver.mydomain.com.br.

h3dema@mycomp $ ssh h3dema@myserver


Instalação do servidor SSH

Você precisa que o computador myserver tenha o servidor SSH instalado e ativo. A instalação é bem simples também bastando um comando.

h3dema@myserver $ apt-get install openssh-server
h3dema@myserver $ service sshd start

Fazendo o backup

O commando que eu utilizo para fazer o backup é mostrado abaixo.
O parâmetro “-a” é de archive, ele irá copiar recursivamente, copia links como links e muito mais.
O parâmetro “-v” é de verbose, que força o rsync a mostrar o que ele esta fazendo. Eu gosto de habilitá-lo porque assim consigo acompanhar o que esta sendo backupeado.
O parâmetro “—delete-excluded” ira apagar no destino os arquivos que foram removidos na origem.
“-e ssh” indica para o rsync que ele deve utilizar o cliente SSH.
 O comando irá copiar o diretório “mydir” na origem (e todos os subdiretórios e arquivos) para o computador myserver, utilizando o usuário h3dema e vai colocar estes dados da origem no diretório “mynewdir” no destino.

h3dema@mycomp $ rsync -av --delete-excluded -e ssh ./mydir h3dema@myserver:mynewdir

Dependendo de como for sua configuração do SSH o comando acima irá utilizar um certificado local para fazer o login no computador remoto, ou irá apresentar uma linha de login onde você deverá digitar a senha do usuário h3dema.

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...