Power User Tools

From PHYSpedia
Jump to: navigation, search

Managing configs with vcsh

vcsh [1] is a utility that allows you to create multiple git repositories to store configuration files in your home directory. It solves the problem of having to use symlinks, and is a very nice tool. It works well with another tool named mr [2] that allows you to synchronize all of your config repos with a single command.

Common Tasks

Adding new repo

Let say you want to add a repo for tracking your zsh configuration. First, create a gitignore file for the repo so you can just do git add .

 > vim ~/.gitignore.d/zsh
 ...

Add the following lines

 /*
 !/.zsh


Now create the repository and push to a remote

 > vcsh init zsh    # create the repo
 > vcsh zsh add .   # add all files not masked by ~/.gitignore.d/zsh
 > vcsh zsh commit  # commit files
 > vcsh zsh remote add origin ssh://user@host/repo/with/write/access  # create remote repo
 > vcsh zsh push --set-upstream origin master # push to the origin and setup tracking

Reverse SSH

The ssh command has a -R option that can be used to allow ssh access to a computer that does not have a public, static IP address (such as a computer behind a NAT at home) using another computer that does have a public IP Address.

Assume you have two computers, Public and Private. Public has a public, static IP address, and you have ssh access to it. Private is a computer that sits behind your home router, and cannot be accessed from the outside. On Private, run the following command:

 > ssh -R 2222:localhost:22 Public

This will log into Public as normal, but it will also setup port forwarding. Now any ssh connections to port 2222 on Public will be forwarded to port 22 on Private. You could also add the -N and -f options:

 > ssh -f -N -R 2222:localhost:22 Public

The -N option tells ssh not to run any commands on the remote (so it will not open a shell), and -f will cause ssh start and run in the background.

auto-reconnect

The above command will work, but if ssh is disconnected for some reason, you will have to rerun it. In fact, some ssh clients are configured to disconnect after a certain amount of inactivity. The autossh[3] utility will monitor an ssh connection and reconnect it if it is disconnected. To use autossh, run the following command

 > autossh -M 0 -f -N -R 2222:localhost:22 Public

The -M option tells autossh which port to use for monitoring the connection. For more detailed (and advanced configuration), see this blog post.