1) Cкопировать SSH ключ на USER@HOST для настройки беспарольной авторизации

ssh-copy-id user@host

Для того чтобы сгенерировать ключи, воспользуйтесь командой ssh-keygen

2) Поднять туннель на 2001 локальном порту для доступа к 80 порту какой-либо машины

ssh -N -L2001:localhost:80 somemachine

Теперь вы можете получить доступ к сайту по ссылку http://localhost:2001/

3) Перенаправить вывод вашего микрофона на спикер другой машины

dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp

Это перенаправит звук с вашего микрофона на спикер порт машины подключаемой по SSH.
Качество звука очень плохое, так что вы услышите много шума.

4) Сравнить файл на удаленной машине с локальной копией

ssh user@host cat /path/to/remotefile | diff /path/to/localfile —

Очень полезно для поиска различий между файлами на разных машинах.

5) Монтировать папки через SSH

sshfs name@server:/path/to/folder /path/to/mount/point

Правда для этого вам сначала надо будет установить SSHFS http://fuse.sourceforge.net/sshfs.html

6) ssh соединение через промежуточную машину

ssh -t reachable_host ssh unreachable_host

Unreachable_host не доступен из локальной сети, но он доступен через сеть reachable_host. Эта команда создает соединение с unreachable_host через “скрытое” соединение с reachable_host.

7) Скопировать файл с HOST1 на HOST2, через ваш HOST

ssh root@host1 “cd /somedir/tocopy/ && tar -cf – .” | ssh root@host2 “cd /samedir/tocopyto/ && tar -xf -”

Крайне удобный способ копирования файлов, если HOST1 и HOST2 не имеют прямых соединений.

8) Удаленный запуск любый GUI приложений

ssh -fX @
SSH должен иметь в конфигурации:

X11Forwarding yes # в Debian такое значение установлено по умолчанию

9) Создать постоянное подключение с машиной

ssh -MNf @

Установить в фоновом режиме постоянное SSH соединение с машиной. Плюс к этом добавьте следующие настройки в файл ~/.ssh/config:
Host host
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster no
Все SSH соединения к этой машине будут идти через постоянный SSH socket. Это очень полезно, если вы постоянно используете SSH для синхронизации файлов, используя rsyns/sftp/cvs/svn, потому что при таких настройках не будут создаваться новые сокеты при выполнении каждой команды.

10) Подключить SCREEN по SSH

ssh -t remote_host screen -r

Напрямую подключить удаленную screen сессию (позволяет сэкономить на родительском процессе bash)

11) PORT KNOCKING!

knock 3000 4000 5000 && ssh -p user@host && knock 5000 4000 3000

Чтобы получить доступ к службе (ssh например) необходимо в определенном порядке постучаться на порты, а также чтобы закрыть доступ.
Необходимо установить knockd.
Пример конфига ниже.
[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) Удалить ключ для хоста

ssh-keygen -R

Крайне удобно использовать, если у вас на одном IP часто переустанавливаются системы.

13) Запускать более комплексные шеловые команды

ssh host -l user $(> ~/.ssh/authorized_keys”

Если вы используете Mac OS X или какой-то другой вариант unix системы, в которой нет ssh-copy-id, то данный вариант поможет вам скопировать ваш публичный ключ на удаленную машину.

14) Проверка скорости передачи данный по SSH

yes | pv | ssh $host “cat > /dev/null”

подключается к машине по SSH и отображает скорость передачи данных, перенаправляя всю передаваемую информацию в /dev/null

Должен быть установлен pv
Debian: ‘apt-get install pv’
Fedora: ‘yum install pv’

15) Установить удаленную screen сессию, к которой можно переподключаться

ssh -t user@some.domain.com /usr/bin/screen -xRR

Задолго до появление вкладок в терминалах, людям приходилось использовать screen для того чтобы открыть несколько шелов в одном терминале. В реалиях SSH screen позволяет нам использовать несколько шелов в одному SSH подключении. Если вы отсоединитесь с помощью «Ctrl-a d» или у вас порвется SSH, то все процессы запущенные на удаленной машине останутся работать и будут ждать вашего возвращения. Другие полезные команды screen: «Ctrl-a c» — открывает новый шел и «Ctrl-a a» — переключаться между шелами.
Также можете ознакомится с небольшим гайдом по screen: http://aperiodic.net/screen/quick_reference

16) Возобновить передачу файла по SCP

rsync –partial –progress –rsh=ssh $file_source $user@$host:$destination_file

Данная команда может возобновить и продолжить прерваную передачу файла через SCP.
Необходимо иметь rsync на обоих сторонах.
rsync –partial –progress –rsh=ssh $file_source $user@$host:$destination_file local -> remote
или
rsync –partial –progress –rsh=ssh $user@$host:$remote_file $destination_file remote -> local

17) Открыть вечную SSH сессию

autossh -M50000 -t server.example.com ‘screen -raAd mysession’

Открывать ssh сессиб, которая постоянно открыта, очень удобно при нестабильном сетевом соединении.

18) Сгенерировать и скопировать SSH ключ

ssh-keygen; ssh-copy-id user@host; ssh user@host

Этот набор команд позволяет вам легко и быстро организовать себе беспарольный доступ на удаленную машину. Будьте осторожны, если у вас уже есть пара ключей в вашем ~/.ssh/ каталоге на локальной машине, т.к. есть возможность, что ssh-keygen может их перезаписать.