Про ssh для начинающих:
Manage your secure shell connections from the GNOME panel - конектимся к удаленным машинам по ssh в один клик.
Доступ к часто используемым серверам
Часто используемые сервера можно занести в закладки, для этого создадим файл ~/.ssh/config с таким содержанием
host server1 hostname 8.8.8.8 port 8888 user user1
Теперь подключиться к server1 можно с помощью такой простой команды
ssh server1
Авторизируемся без ввода пароля
Для авторизации на удаленном сервере без ввода пароля нам понадобятся ssh ключи, начинаем генерировать:
ssh-keygen -t rsa
Когда спросит про passphrase то оставляем пустым, иначе при каждом конекте придется вводить повторно. Путь для сохранения - произвольный.
Перед копированием публичного ключа на сервер переименовываем его в authorized_keys:
cd ~/.ssh cp id_rsa.pub authorized_keys
Копируем публичный ключ на удаленную машину:
cd ~/.ssh scp authorized_keys user@host.servername.com:/root/.ssh/
Еще скопировать ключ можно с помощью ssh-copy-id, нужный порт указывается с помощью опции -p
ssh-copy-id '-p 11000 user@host.servername.com'
Теперь можно логинится без ввода пароля:
ssh user@host.servername.com
Расширенное описание Using SSH Keys
Выполнение действий при входе пользователя
Бывает удобно выполнить какие-то действия при входе пользователя по ssh. Например отправка email при заходе кого-то под учетной записью root.
Для выполнения действий для определенного пользователя нужно внести эти действия в файл /home/USER/.ssh/rc.
Для выполнения действий для всех пользователей нужно внести эти действия в файл /ets/ssh/sshrc. Например, добавим отправку email при заходе любого пользователя по ssh.
vim /ets/ssh/sshrc echo 'ALERT - Shell Access on:' `date` `who` | mail -s "Alert: Shell access" email@domain.com
ssh-туннелирование
SOCKS прокси на порту localhost:9999
ssh -D 9999 -p22 user@server -N -f
Проброс туннеля с localhost1:localport на remotehost:remoteport
ssh -N -L localhostA:localportA:remotehostB:remoteportB user@server
Пример подключения к локальному http-сервера на удаленной машине с локальной машины
ssh -N -L localhost:8888:192.168.1.3:8888 user@192.168.1.3 # тест curl -I http://localhost:8888
После этого все соединения на локальный_адрес:локальный_порт будут переадресовываться на удаленный сервер.
Для переброса удаленного порта на локальную машину используется ключ -R
ssh -R remotehost:remoteport:localhost:localport user@server
В этом случаи соединения перебрасываются с удаленной машины на локальную.
Монтирование удаленной ФС
Для монтирования удаленной ФС под ubuntu нам понадобится sshfs
sudo apt-get install sshfs
Монтирование удаленной папки
sshfs -p 22 name@server:/remote/path/to/folder /local/path/to/mount/point
Для размонтирования:
fusermount -u /local/path/to/mount/point
Для принудительного размонтирования раздела
fuser -km /local/path/to/mount/point
Монтирование FTP в файловую систему
Для монтирования FTP в ФС нам понадобится curlftpfs:
sudo apt-get install curlftpfs
Для монтирования ФТП-раздела к примеру в папку /media/ftp набираем в терминале следующие:
curlftpfs ftp://[user]:[passwort]@ftpserver.net /media/ftp
Взято с Монтирование FTP в файловую систему
Безопасность
Если начинают подбирать пароли для доступа к ssh, что видно по логам (/var/log/secure под centos), то можно пойти двумя путями:
Еще про безопасность SSH под Centos - Securing OpenSSH
Серверы
SSH серверы под *nix:
SSH серверы под Windows:
Разное
Сравнение локального файла с удаленным
ssh user@server "cat /tmp/remotefile" | diff - /tmp/localfile
Вход на удаленный сервер без появления записи в выводе команд lastlog/w/who
ssh -T user@server
Подключение с одного сервера на другой по одному и тому же ключу, т.е. цепочка вида desktop > server 1 > server 2 > ... > server n, для этого надо в ~/.ssh/config, на каждой машине с которой планируется соединение с другой, добавить
Host * ForwardAgent yes
Дополнительное чтиво