diff options
| author | Vito Graffagnino <vito@graffagnino.xyz> | 2020-09-08 18:10:49 +0100 |
|---|---|---|
| committer | Vito Graffagnino <vito@graffagnino.xyz> | 2020-09-08 18:10:49 +0100 |
| commit | 3b0142cedcde39e4c2097ecd916a870a3ced5ec6 (patch) | |
| tree | 2116c49a845dfc0945778f2aa3e2118d72be428b /vimwiki/Examples.md | |
| parent | 8cc927e930d5b6aafe3e9862a61e81705479a1b4 (diff) | |
Added the relevent parts of the .config directory. Alss add ssh config
Diffstat (limited to 'vimwiki/Examples.md')
| -rw-r--r-- | vimwiki/Examples.md | 282 |
1 files changed, 282 insertions, 0 deletions
diff --git a/vimwiki/Examples.md b/vimwiki/Examples.md new file mode 100644 index 0000000..fa3b5a2 --- /dev/null +++ b/vimwiki/Examples.md @@ -0,0 +1,282 @@ + +##1. Copy SSH public key on a remote machine for passwordless login:## + + `ssh-copy-id user@host` + + To generate the keys use the command ssh-keygen + + +##2. Start a tunnel from some machine’s port 80 to your local post 2001:## + + `ssh -N -L2001:localhost:80 somemachine` + + Now you can acces the website by going to http://localhost:2001/ + +##3. Output your microphone to a remote computer’s speaker## + + `dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp` + This will output the sound from your microphone port to the ssh target computer’s + speaker port. The sound quality is very bad, so you will hear a lot of hissing. + +##4. Compare a remote file with a local file## + + `ssh user@host cat /path/to/remotefile | diff /path/to/localfile –` + + Useful for checking if there are differences between local and remote files. + +##5. Mount folder/filesystem through SSH## + + `sshfs name@server:/path/to/folder /path/to/mount/point` + + Install SSHFS from http://fuse.sourceforge.net/sshfs.html + Will allow you to mount a folder security over a network. + +##6. SSH connection through host in the middle## + + `ssh -t reachable_host ssh unreachable_host` + + Unreachable_host is unavailable from local network, but it’s available + from reachable_host’s network. This command creates a connection to + unreachable_host through “hidden” connection to reachable_host. Of + course you need to be able to access reachable_host for this. + +##7. Copy from host1 to host2, through your host## + + `ssh root@host1 “cd /somedir/tocopy/ && tar -cf – .” | ssh root@host2 “cd /samedir/tocopyto/ && tar -xf -“` + + Good if only you have access to host1 and host2, but they have no + access to your host (so ncat won’t work) and they have no direct + access to each other. + +##8. Run any GUI program remotely## + + `ssh -fX <user>@<host> <program>` + + The SSH server configuration requires: + + `X11Forwarding yes # this is default in Debian` + + And it’s convenient too: + + `Compression delayed` + +##9. Attach screen over ssh## + + `ssh -t remote_host screen -r` + + Directly attach a remote screen session (saves a useless parent bash process) + +##10. Create a persistent connection to a machine## + + `ssh -MNf <user>@<host>` + + Create a persistent SSH connection to the host in the background. Combine + this with settings in your ~/.ssh/config: + + `Host host` + `ControlPath ~/.ssh/master-%r@%h:%p` + `ControlMaster no` + + All the SSH connections to the machine will then go through the persisten SSH + socket. This is very useful if you are using SSH to synchronize files (using + rsync/sftp/cvs/svn) on a regular basis because it won’t create a new socket + each time to open an ssh connection. + +##11. Port Knocking!## + + `knock <host> 3000 4000 5000 && ssh -p <port> user@host && knock <host> 5000 4000 3000` + + Knock on ports to open a port to a service (ssh for example) and knock again to close + the port. You have to install knockd. + + See example config file below. + + `[options]` + `logfile = /var/log/knockd.log` + `[openSSH]` + `sequence = 3000,4000,5000` + `seq_timeout = 5` + `command = /sbin/iptables -A INPUT -i eth0 -s %IP% -p tcp –dport 22 -j ACCEPT` + `tcpflags = syn` + `[closeSSH]` + `sequence = 5000,4000,3000` + `seq_timeout = 5` + `command = /sbin/iptables -D INPUT -i eth0 -s %IP% -p tcp –dport 22 -j ACCEPT` + `tcpflags = syn` + +##12. Remove a line in a text file. Useful to fix “ssh host key change” warnings## + + `ssh-keygen -R <the_offending_host>` + + In this case it’s better do to use the dedicated tool + +##13. Remove a line in a text file. Useful to fix “ssh host key change” warnings## + + `sed -i 8d ~/.ssh/known_hosts` + +##14. Run complex remote shell cmds over ssh, without escaping quotes## + + `ssh host -l user $(<cmd.txt)` + + Much simpler method. More portable version: ssh host -l user “`cat cmd.txt`” + +##15. Copy a MySQL Database to a new Server via SSH with one command## + + `mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C user@newhost “mysql -uUSER -pPASS NEW_DB_NAME”` + + Dumps a MySQL database over a compressed SSH tunnel aand uses it as input to mysql + – i think that is the fastest and best way to migrate a DB to a new server! + +##16. Copy your ssh public key to a server from a machine that doesn’t have ssh-copy-id## + + `cat ~/.ssh/id_rsa.pub | ssh user@machine “mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys”` + + If you use Mac OS X or some other *nix variant that doesn’t come with ssh-copy-id, + this one-liner will allow you to add your public key to a remote machine so you can + subsequently ssh to that machine without a password. + + +##17. Live ssh network throughput test## + + ` yes | pv | ssh $host “cat > /dev/null”` + + connects to host via ssh and displays the live transfer speed, directing all transferred data to /dev/null + needs pv installed + + Debian: `‘apt-get install pv’` + Fedora: `‘yum install pv’` (may need the ‘extras’ repository enabled) + Opensuse: `zypper install pv` + +##18. How to establish a remote Gnu screen session that you can re-connect to## + + `ssh -t user@some.domain.com /usr/bin/screen -xRR` + + Long before tabbed terminals existed, people have been using Gnu screen to open many shells in a single text + terminal. Combined with ssh, it gives you the ability to have many open shells with a single remote + connection using the above options. If you detach with “Ctrl-a d” or if the ssh session is accidentally + terminated, all processes running in your remote shells remain undisturbed, ready for you to reconnect. + Other useful screen commands are “Ctrl-a c” (open new shell) and “Ctrl-a a” (alternate between shells). + Read this quick reference for more screen commands: http://aperiodic.net/screen/quick_reference + +##19. Resume scp of a big file## + + `rsync –partial –progress –rsh=ssh $file_source $user@$host:$destination_file` + + It can resume a failed secure copy ( usefull when you transfer big files like db dumps through vpn ) using rsync. + It requires rsync installed in both hosts. + + `rsync –partial –progress –rsh=ssh $file_source $user@$host:$destination_file local` -> remote + or + `rsync –partial –progress –rsh=ssh $user@$host:$remote_file $destination_file remote` -> local + +##20. Analyze traffic remotely over ssh w/ wireshark## + + `ssh root@server.com ‘tshark -f “port !22” -w -‘ | wireshark -k -i –` + + This captures traffic on a remote machine with tshark, sends the raw pcap data over the ssh link, + and displays it in wireshark. Hitting ctrl+C will stop the capture and unfortunately close your + wireshark window. This can be worked-around by passing -c # to tshark to only capture a certain # + of packets, or redirecting the data through a named pipe rather than piping directly from ssh to + wireshark. I recommend filtering as much as you can in the tshark command to conserve bandwidth. + tshark can be replaced with tcpdump thusly: + + `ssh root@example.com tcpdump -w – ‘port !22’ | wireshark -k -i –` + +##21. Have an ssh session open forever## + + `autossh -M50000 -t server.example.com ‘screen -raAd mysession’` + + Open a ssh session opened forever, great on laptops losing Internet connectivity when switching WIFI spots. + +##22. Harder, Faster, Stronger SSH clients## + + `ssh -4 -C -c blowfish-cbc` + + We force IPv4, compress the stream, specify the cypher stream to be Blowfish. I suppose you could use + aes256-ctr as well for cypher spec. I’m of course leaving out things like master control sessions and + such as that may not be available on your shell although that would speed things up as well. + +##23. Throttle bandwidth with cstream## + + `tar -cj /backup | cstream -t 777k | ssh host ‘tar -xj -C /backup’` + + this bzips a folder and transfers it over the network to “host” at 777k bit/s. + cstream can do a lot more, have a look http://www.cons.org/cracauer/cstream.html#usage + for example: + + `echo w00t, i’m 733+ | cstream -b1 -t2` + +##24. Transfer SSH public key to another machine in one step## + + `ssh-keygen; ssh-copy-id user@host; ssh user@host` + + This command sequence allows simple setup of (gasp!) password-less SSH logins. Be careful, as if you + already have an SSH keypair in your ~/.ssh directory on the local machine, there is a possibility + ssh-keygen may overwrite them. ssh-copy-id copies the public key to the remote host and appends it to + the remote account’s ~/.ssh/authorized_keys file. When trying ssh, if you used no passphrase for your key, + the remote shell appears soon after invoking ssh user@host. + +##25. Copy stdin to your X11 buffer## + + `ssh user@host cat /path/to/some/file | xclip` + + Have you ever had to scp a file to your work machine in order to copy its contents to a mail? xclip can help + you with that. It copies its stdin to the X11 buffer, so all you have to do is middle-click to paste the + content of that looong file :) + +##26. Synchronize date and time with server over ssh## + + `date --set="$(ssh user@server date)"` + + NTP is better, but there are situations where it can’t be used. In those cases, you can do this to + sync the local time to a server. + +##27. Duplicate installed packages from one machine to the other## + + `ssh root@remote.host "rpm -qa" | xargs yum -y install` + + This will duplicate installed packages from one machine to the other – works for rpm/yum based systems. + + The next one works for Ubuntu/Debian based systems. + + Tell local Debian machine to install packages used by remote Debian machine + + `ssh remotehost 'dpkg --get-selections' | dpkg --set-selections && dselect install` + + (also works on Ubuntu) Copies the ‘install,’ ‘hold,’ ‘deinstall’ and ‘purge’ states of packages on the + remote machine to be matched on the local machine. Note: if packages were installed on the local + machine that were never installed on the remote machine, they will not be deinstalled by this operation. + + `apt-get install ssh root@host_you_want_to_clone "dpkg -l | grep ii" | awk '{print $2}'` + + “Clone” a list of installed packages from one Debian/Ubuntu Server to another + +##28. Backup a remote database to your local filesystem## + + `ssh user@host 'mysqldump dbname | gzip' > /path/to/backups/db-backup-`date +%Y-%m-%d`.sql.gz` + + I have this on a daily cronjob to backup the commandlinefu.com database from NearlyFreeSpeech.net + (awesome hosts by the way) to my local drive. Note that (on my Ubuntu system at least) you need to + escape the % signs on the crontab. + +##29. run command on a group of nodes in parallel## + + `echo "uptime" | pee "ssh host1" "ssh host2" "ssh host3"` + + `echo "uptime" | tee >(ssh host1) >(ssh host2) >(ssh host3)` + + The pee command is in the moreutils package. + +##30. ssh to machine behind shared NAT## + + `ssh -NR 0.0.0.0:2222:127.0.0.1:22 user@jump.host.com` + + Useful to get network access to a machine behind shared IP NAT. Assumes you have an accessible jump + host and physical console or drac/ilo/lom etc access to run the command. + + Run the command on the host behind NAT then ssh connect to your jump host on port 2222. That + connection to the jump host will be forwarded to the hidden machine. + + Note: Some older versions of ssh do not acknowledge the bind address (0.0.0.0 in the example) + and will only listen on the loopback address. + |
