SSH

В компьютерных сетях ssh или " Secure Shell" является сетевым протоколом  позволяющим устанавливать связь между локальным и удаленным (remote) компьютерами. При этом применяется криптография с публичным ключом (public key), для аутентификации удаленного компьютера или для позволения аутентифицировать пользователя с удаленного компьютера. ssh гарантирует конфиденциальность и целостность передачи данных между обоими компьютерами, используя кодирование и MAC (message authentication codes). Типичнная сфера применения ssh - вход в систему на удаленном (remote) компьютере и выполнение команд на нем, также поддерживается туннелирование и форвардинг любых портов TCP и X11. Файлы могут передаваться по включенным в ssh протоколам sftp или scp. В базовой установке сервер ssh использует порт TCP 22.

Безопастность протокола ssh

Как правило, регистрация root через ssh должна быть запрещена. Вообще стоит избегать входа в систему как root, что позволит получить дополнительные гарантии безопасности. Так же, с целью ограничить возможность проведения атак типа brute force (перебор паролей по словарю, требующий значительного времени), стоит ограничить пользователей как в количестве попыток для входа в систему, так в продолжительности открытия окна регистрации (до 10 минут)

Вышеуказанные меры можно реализовать путем редактирования файла конфигурации ( в любом, предпочитаемом Вами редакторе):

/etc/ssh/sshd_config

Ищем и изменяем рискованные установки.

Следующие установки должны быть изменены:

Порт <желаемый порт>: эта запись должна указывать на порт в маршрутизаторe, который свободно соединен к линии. Если Вы не знаете, что это такое, стоит еще раз обдумать применение ssh для Remote управления. Debian устанавливает порт 22 по умолчанию. Однако целесообразно, использовать порт вне зоны стандартного сканирования, поэтому мы используем, например, порт 5874:

Port 5874

ListenAddress <IP компьютера или интерфейса сети>: Так как порт передается дальше роутеру, компьютер должен использовать статический IP адрес, если только не используется никакой локальный DNS сервер. Мы используем статический IP для примера:

ListenAddress 192.168.2.134

Хотя в Debian по умолчанию установлена версия протокола ssh 2, но, конечно, стоит удостовериться в этом еще раз.

LoginGraceTime <временной промежуток процесса регистрации>: позволенный для регистрации промежуток времени составляет как стандарт абсурдные 600 секунд. Так как 10 минут явно избыточны, чтобы ввести имя пользователя и пароль, мы установим  несколько более благоразумный промежуток времени:

LoginGraceTime 45

Теперь имеется 45 секунд для входа, и хакер не будет иметь по 10 минут на каждую попытку взломать пароль.

PermitRootLogin <yes>: почему здесь Debian выдал разрешение на вход в систему как root, не объяснимо. Мы исправляем на 'no':

PermitRootLogin no
StrictModes yes

MaxAuthTries <- количество позволенных попыток регистрации>: Вы не должны устанавливать больше чем 3 или 4:

MaxAuthTries 2

Следующие установки должны быть добавлены, так как они отсутствуют по умолчанию:

AllowUsers: имена пользователей, которым позволен доступ через ssh, разделенные символом пробела

AllowUsers <xxx>: только зарегистрированные пользователи могут использовать доступ, и только с пользовательскими правами. С adduser можно добавить пользователя специально для использования ssh:

AllowUsers werauchimmer

PermitEmptyPasswords <xxx>: дайте Вашему пользователю прекрасный длинный пароль, который за миллионы лет нельзя было бы подобрать. Пользователь с доступом ssh должен быть единственным. Если он уже зарегистрирован, то может с su стать root:

PermitEmptyPasswords no

PasswordAuthentication <xxx>: конечно, должено иметь значение 'yes'. В случае, когда не используют KeyLogin.

PasswordAuthentication yes [если никаких keys не используют]

В конце концов:

/etc/init.d/ssh restart

Теперь Вы имеете достаточно надежную конфигурацию ssh. И напомним еще раз, что лучше, прежде всего добавить пользователя специально для использования ssh.

Примечание: Если ssh подключение отказывается и получают сообщение об ошибке, ищите в $HOME скрытый каталог .ssh. Потом удалите файл known_hosts и попробуйте снова установить связь. Эта проблема встречается преимущественно, если IP-адрес выделяется динамично (DCHP).

Программы X-Windows используемые через SSH

ssh -X позволяет зарегистрироввшись на удалённом компьютере работать с его программами с графическим интерфейсом (которые на самом деле запускаются на том компьютере, и только отражаются локально). как пользователь$ (обратите внимание: X в верхнем регистре):

$ ssh -X username@xxx.xxx.xxx.xxx (or IP)

Введите пароль пользователя на удалённом компьютере и можете запускать приложения из консоли:

$ iceweasel или oocalc или oowriter или kspread

При медленной скорости соединения может помочь компрессия передаваемых данных, однако на высокой скорости компрессия может привести к обратному эффекту:

$  ssh -C -X username@xxx.xxx.xxx.xxx (или IP)

Прочтите:

$man ssh

Примечание: Если ssh подключение отклонено и Вы получили сообщение об ошибке, найдите в $HOME скрытый каталог .ssh. Удалите файл known_hosts и попробуйте заново установить связь. Эта проблема встречается преимущественно, если IP-адрес выделяется динамично (DCHP).

SSH в konqueror

Konqueror и Krusader имеют поддержку ssh и могут подключаться через sftp://.

1) Откройте новое окно в Konqueror
2) Введите в строке адреса: sftp://username@ssh-server.com

При­мер 1: Во всплывающем окне будет запрошен пароль ssh,  введите пароль и нажмите ОК:

sftp://sidux1@remote_hostname_or_ip

Пример 2: непосредственное  соединение,  без запроса пароля

sftp://username:password@remote_hostname_or_ip

Применение в локальной сети

sftp://username@10.x.x.x or 198.x.x.x.x
(Примечание: введите пароль во всплывающем окне и нажимайте ОК)

Таким образом устанавливается SSH соединение. В окне Konqueror можно работать с файлами на сервере ssh также, как с локальными.

Примечание: Если Вы изменили используемый по умолчанию ssh порт с 22 на другой, то необходимо указать какой порт sftp должен использовать:

sftp://user@ip:port

'user@ip:port' - стандартная команда для многих приложений, таких как sftp and smb.

Использование SSHFS

SSHFS - это простой, быстрый и надежный метод использующий  FUSE, для подсоединения удаленной файловой системы. Со стороны сервера необходим только работающий ssh-daemon.

На стороне клиента Вы вероятно должны установить sshfs. fuse и groups установлены по умолчанию на sidux eros.

Со стороны клиента сперва инсталлируется sshfs:

apt-get update && apt-get install sshfs

Подсоединить удаленную файловую систему очень просто:

sshfs username@remote_hostname:directory local_mount_point

Причем username подразумевает имя пользователя на удаленном хосте.

Если не указывается никакой определенный каталог, будет открыт домашний каталог удаленного пользователя. Пожалуйста, обратите внимание: двоеточие : необходимо, даже если каталог не указывается!

После подключения удаленный каталог ведет себя как локальная файловая система. Можно искать файлы, читать и изменять их, а также запускать скрипты как на локальной файловой системе.

Отсоединение:

fusermount -u local_mount_point

При регулярном использовании sshfs рекомендуется внести запись в /etc/fstab вида:

sshfs#@remote_hostname:/remote_directory /local_mount_point fuse user,allow_other,uid=1000,gid=1000,noauto 0 0

Это делает возможным каждому пользователю группы fuse подсоединить файловую систему известной командой:

mount /путь/к/mount/точке

Отсоединение можно произвести следующей командой:

umount /путь/кmount/точка

А этой командой проверяется, -  членство в группе fuse:

cat /etc/group | grep fuse

Ответ должен был выглядеть, например, таким образом:

fuse:x:117: <имя пользователя>

Если имя пользователя (username) не указано, используйте команду adduser как root:

adduser <имя пользователя> fuse

Внимание: для того чтобы изменения вступили в силу надо выйти из системы и перерегистрироваться.

Теперь имя пользователя должно быть указано, и следующие команды становятся выполнимы:

mount local_mount_point

и

umount local_mount_point
Содержание, последний раз пересмотрено 04/01/2010 2355 UTC