Про SSH Linux 09.04.2010

ssh.png Про 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), то можно пойти двумя путями:

  • сменить номер порта с стандартного 22 на любой другой (желательно, больше 1000): в файле /etc/ssh/sshd_config правим нужную строчку на что-то похожие Port 2323
  • управлять количеством подключений за определенный период времени с помощью iptables - Using iptables to rate-limit incoming connections

Еще про безопасность 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

Дополнительное чтиво

Цитата
Если Вы ненавидите, вас победили!
Категории
Архив