Problems using snap autossh

Problem

You would like to use autossh to keep a connection open (ie database) between two hosts, but while the ssh equivalent command to start a tunnel works, the autossh does not.

You might be seeing the following errors (using AUTOSSH_DEBUG=1):

autossh[7471]: ssh exited prematurely with status 255; autossh exiting

or if you look at /var/logs/syslog you could also see entries like the following:

 apparmor="DENIED" operation="open" profile="snap.autossh.autossh" name="/home/autossh/.ssh/id_rsa.pub" pid=7447 comm="ssh" requested_mask="r" denied_mask="r" fsuid=1002 ouid=1002

Solution

You have used snap to install autossh which is not allowed by apparmor.

Remove the snap package and install autossh as a normal debian package:

sudo snap remove autossh
sudo apt install autossh

Connect your Shivr bluetooth headphones in Linux

To connect your new Shivr headphones but it would probably work with other bluetooth headphones too, find the MAC address from your headphones (by connection with an Android device first) and do the following from the command line:

sudo apt install bluez-tools
bt-device -l (that will list the available devices)
bt-device -c AA:11:22:33:44:BB

and make sure you change your Music Player Daemon Output (Audio Volume Settings -> Applications) settings to use your new headphones.

Setup your own gitlab runner

To add your own gitlab runner, follow the steps below

  • Create your runner, in EC2, Google, or any other cloud provider and have ssh access to it.
  • Login to your runner from the previous step and install the gitlab-runner (there are various methods described here: https://docs.gitlab.com/runner/install/. We install using Gitlab’s repositories)
  • Register the gitlab-runner by following the instructions here: https://docs.gitlab.com/runner/register/index.html . You would need to get the token for each project you want to register your runner with (Gitlab -> Settings -> CI/CD -> Runners -> Expand). You can use different executors for your running during the registration such as docker, shell etc.
  • Go to your Gitlab project and find the runner you register above and enable it for the project. You should also add the tags: name_of_your_runner in your .gitlab-ci.yml file.

Cannot login to MariaDB server with root account

Problem

You are trying to login to MariaDB with the root user, but even after resetting the password, it is still not possible to login.

Solution

It seems that certain MariaDB packages that come with Linux distributions use the unix_socket as the authentication method.

MariaDB [mysql]> SELECT user, host, plugin FROM user WHERE user='root';
+------+-----------+-------------+
| user | host      | plugin      |
+------+-----------+-------------+
| root | localhost | unix_socket |
+------+-----------+-------------+
1 row in set (0.00 sec)

Change the plugin as described here (https://stackoverflow.com/a/43424234) with the following:

MariaDB [mysql]> UPDATE mysql.user SET plugin = '' WHERE user = 'root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Get a list of directories with user permissions

Problem

You want to run a command in a hosted server but you don’t have su permissions. There are directories that have different owners/permissions, so you would like to see them.

Solution

Use the tree command and save the output in a file if you have many directories:

tree -pufid /home/directory_to_check > /home/user/permissions.txt

taken from the answer here: https://unix.stackexchange.com/a/82374

kubectl error: “The connection to the server localhost:8080 was refused – did you specify the right host or port?”

Problem

You want to use the kubectl to get your cluster information but you are getting the following error message

$ kubectl cluster-info
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
The connection to the server localhost:8080 was refused - did you specify the right host or port?

Solution

That could happen if you have already setup kubectl before or have used a different environment.

So you will need to first unset the environment variable KUBECONFIG with:

$ unset KUBECONFIG

and then use the gcloud client to set your environment again:


$ gcloud container clusters get-credentials your_cluster_name --zone europe-west2-a --project your_project_name

So after this you should be able to use kubectl to get the cluster information

kubeconfig entry generated for your_cluster_name.

$ kubectl cluster-info
Kubernetes master is running at https://xxx.xxx.xxx.xxx
GLBCDefaultBackend is running at https://xxx.xxx.xxx.xxx/api/v1/namespaces/kube-system/services/default-http-backend:http/proxy
Heapster is running at https://xxx.xxx.xxx.xxx/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at https://xxx.xxx.xxx.xxx/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://xxx.xxx.xxx.xxx/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy