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

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

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

Port <желаемый порт>: эта запись должна указывать на порт в маршрутизатор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 не используют]

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

service ssh restart

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

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

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

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

$ ssh -X [email protected] (or IP)

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

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

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

$  ssh -C -X [email protected] (или IP)

прочитайте:

$man ssh

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

Копирование файлов и каталогов удаленно через SSH с scp

SCP использует командную строку (терминал / CLI), для копирования файлов между компьютерами в сети. Она использует SSH аутентификации и обеспечения безопасности для передачи данных, поэтому УПП запросит пароль или парольную фразу, который необходим для аутентификации.

Если у вас есть SSH права на удаленный ПК или сервер, SCP позволяет копировать разделы, каталоги или файл, и с того компьютера, на указанное место или пункт назначения по вашему выбору, где у Вас также есть права доступа. Например, это может включать ПК или сервер у вас есть разрешение на доступ к вашей локальной сети (или где-либо в мире), чтобы позволить передачу данных на USB-жесткий диск, подключенный к компьютеру.

Вы можете рекурсивно скопировать целые разделы и каталоги с опцией scp -r. Обратите внимание, что SCP-р следует символическим ссылкам, встречающимся в обход дерева.

Примеры:

Пример 1: Копирование раздела:

scp -r <user>@xxx.xxx.x.xxx:/media/disk1part6/ /media/diskXpartX/

Пример 2: Копирование каталог раздела, в данном случае каталог фотографий в $ HOME:

scp -r <user>@xxx.xxx.x.xxx:~/photos/ /media/diskXpartX/xx

Пример 3: Копирование файла из каталога на раздел, в этом случае файл в $ HOME:

scp <user>@xxx.xxx.x.xxx:~/filename.txt /media/diskXpartX/xx

Пример 4: Копирование файла на раздел:

scp <user>@xxx.xxx.x.xxx:/media/disk1part6/filename.txt /media/diskXpartX/xx

Пример 5: Если вы уже находитесь в диске / каталоге, с которого Вы хотите скопировать любую директорию или файлы, используйте ' . ' (точка):

scp -r <user>@xxx.xxx.x.xxx:/media/disk1part6/filename.txt . 

Пример 6: Для копирования файлов с компьютера / сервера на другой, (используйте scp -r если это копирование раздела или каталога):

scp /media/disk1part6/filename.txt <user>@xxx.xxx.x.xxx:/media/diskXpartX/xx

Прочитайте:

man scp

Удаленный доступ к SSH с X-Forwarding с Windows-ПК:

* Скачайте и запишите на компактный диск или DVD Cygwin XLiveCD
* Положите диск в CD-ROM ПК с Windows и дождитесь автозапуска.
Нажмите кнопку "continue", пока окна оболочки всплывает и введите:

ssh -X [email protected]

Примечание: xxx.xxx.xxx.xxx является IP в удаленного компьютера Linux или его URL (например, dyndns.org), конечно еще именем пользователя, и с одной учетной записью пользователя, которая существует на удаленной машине. После успешного входа, запустите например "KMail" и проверьте электронную почту!

Важно: убедитесь, что у hosts.allow имеется запись, чтобы разрешить доступ с ПК из других сетей. Если вы находитесь под защитой NAT-брандмауэром или за брандмауэром маршрутизатора, убедитесь в том, что порт 22 направляется в вашу Linux машину.

SSH в konqueror

Konqueror и Krusader имеют поддержку ssh и могут подключаться через sftp://.
1) Откройте новое окно в Konqueror
2) Введите в строке адреса: sftp://[email protected]

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

sftp://aptosid1@remote_hostname_or_ip

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

sftp://username:password@remote_hostname_or_ip

Применение в локальной сети: (Примечание: введите пароль во всплывающем окне и нажмите ОК)

sftp://[email protected] 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 установлены по умолчанию на aptosid 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#username@remote_hostname://remote_directory /local_mount_point fuse user,allow_other,uid=1000,gid=1000,noauto,fsname=sshfs#username@remote_hostname://remote_directory  0 0 

Потом закоментуйте user_allow_other in /etc/fuse.conf:

 
 # Allow non-root users to specify the 'allow_other' or 'allow_root'
 # mount options.
 #
 user_allow_other

Это делает возможным каждому пользователю группы 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
Содержание, последний раз пересмотрено 01/11/2011 0650 UTC