<--
Some bits & bobs
Here lives some miscellaneous things I reference one or one hundred
times and figure they should be gathered somewhere.
WPA Supplicant
Frequently forgotten usage of the wpa_cli
tool
> scan
...
<3>CTRL-EVENT-SCAN-RESULTS
> scan_results # run once above event appears
bssid / freq / sig lvl / flags / ssid
...
> add_network
#
> set_network # ssid "network"
> set_network # psk "psswd"
# or if no password:
> set_network # key_mgmt NONE
> enable_network #
> save_config
GPG key signing with Git
Sometime ago I spent hours on this. When signing a
commit, this error would appear
gpg: skipped "Foo Bar <Foo_Bar@baz>": No secret key[GNUPG:] INV_SGNR 9 Foo Bar <Foo_Bar@baz>[GNUPG:] FAILURE sign 17
gpg: signing failed: No secret key
After much searching I came up empty handed. Finally, one thing
stood out. The name and email in ~/.gitconfig
must
match exactly to the name and email associated with the GPG key
$ gpg --list-secret-keys --keyid-format=long
/home/foo/.gnupg/pubring.kbx
-----------------------------
sec rsa4096/FC53C827D09C7050 2019-03-24 [SC]
ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
uid [ultimate] Foo Bar <Foo_Bar@baz>
ssb rsa4096/2EE67124D597BB00 2019-03-24 [E]
$ head -n 4 .gitconfig
[user]
name = Foo Bar
email = Foo_Bar@baz
signingkey = FC53C827D09C7050
SSH agent for password-less login
I have numerous machines I frequently log in to and from via SSH. Typing
in a password every time is tiresome and a password-less key is not
an option. A solution is an SSH agent running in the background, which
prompts for a password once at log in, and stores it for the duration
of the session (until reboot). The following can live in your shell's
startup file (e.g. ~/.zshrc
)
if [ ! -S ~/.ssh/ssh_auth_sock ]; then
eval "$(ssh-agent)"
ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock
fi
export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock
ssh-add -l > /dev/null || ssh-add
Then, just copy the needed key between machines with ssh-copy-id -i ~/.ssh/id_xxx.pub name@host
Configuration file manager
Across the aforementioned machines, I also have various configuration
files that I like to keep track of for the sake of backing
them up in case of data loss. I use yadm
to achieve this. Mostly for it's ease of use (yadm is quite simply
an alias for git) and minimal system footprint, which consists mostly
of a git directory living out of sight in ~/.local/share/yadm/repo.git
.
Since it's just Git under the hood, a standard .gitignore
file can be used to ignore which ever files you choose in your home directory.
By default, yadm only manages files within your home directory. While not
conventional, it can also be used to track system-level files by creating
an alias like sysyadm="sudo yadm --yadm-dir /etc/yadm --yadm-data /etc/yadm/data"
,
then used like normal.
# sysyadm init -w /
# sysyadm add foo.conf
# sysyadm commit -m "foo"