включить редактирование

SSH максимально удобно и безопасно

Создан:

Про SSH, или «защищенную оболочку [Secure Shell]», слышали многие из нас, но она умеет не только открывать сеанс терминала на другом компьютере. Тем, кто не знаком с SSH, будет интересно узнать, что с ее помощью можно открыть защищенный сеанс терминала через сеть. Весь трафик, включая обмен паролями, шифруется, что позволяет использовать незащищенные каналы. Обычно SSH запускается так: ssh user@hostname Команда подключится к удаленному хосту и запросит пароль пользователя, а затем откроет оболочку по умолчанию для этого пользователя. Часть адреса user@ можно опустить, и тогда SSH воспользуется текущим именем пользователя, но придется указать пароль; при этом будут использованы настройки по умолчанию для этого пользователя на удаленном компьютере. Использовать пароли для входа и неудобно, и ненадежно; и чем надежнее пароль, тем это менее удобно. SSH имеет и альтернативу – аутентификацию по ключам, позволяющую пользователю войти в систему на другом компьютере от своего име? ни без ввода пароля. Поэтому не пользуйтесь ею на устройствах, которые легко потерять или украсть, например, на смартфонах. Создать ключи на локальном компьютере можно командой: ssh-keygen -t edcsa Параметр -t задает тип ключа: rsa, dsa или edcsa. Последний используется по умолчанию в более новых версиях SSH, но не поддерживается в более старых релизах, поэтому вы можете выбрать dsa. Ответьте на вопросы, и команда создаст пару ключей в каталоге ~/.ssh; файлы будут названы в соответствии с типом, например, id_ecdsa and id_ecdsa.pub. Последний файл – публичный ключ, который копируется на удаленный компьютер, другой файл – приватный ключ, и им не следует делиться ни с кем. Скопируйте публичный ключ на удаленный компьютер командой ssh-copy-id -i ~/.ssh/id_edcsa.pub user@hostname Команда запросит у вас пароль на удаленном компьютере и затем скопирует туда публичный ключ. При следующей попытке подключиться к этому компьютеру под данным пользователем вы войдете в систему без запроса пароля и локальный доступ будет работать так же, как прежде. Просто помните, что вне маршрутизатора нужно указывать другой номер порта, а также внешний IP-адрес или имя хоста компьютера.
ssh -p 5678 user@public.ip
Если маршрутизатор может перенаправлять только на тот же порт, можно заставить SSH слушать оба порта, и порт 22 будет по-прежнему работать локально – для этого добавьте следующие строки в sshd_config:
Port 22
Port 5678
Теперь просто запомните, что при подключении извне нужно указывать новый порт. Если вам лень запоминать, можно добавить следующие строки в ~/.ssh/ssh_config:
Host <имя хоста или адрес IP>
Port 5678
Любой параметр, указанный после строки Host, применяется только к соответствующим хостам. Применяться будут все параметры до следующей строки Host, так что перед любыми глобальными настройками ставьте строку Host *. Каждый параметр можно задавать только один раз, поэтому настройки для конкретных хостов в этом файле должны идти перед настройками по умолчанию. Эти настройки применяются только к текущему локальному пользователю. Чтобы они применялись ко всем пользователям, воспользуйтесь файлом /etc/ssh_config.
Черные списки
Еще один способ борьбы с нежелательными попытками входа по SSH, особенно если вы не можете поменять порт – автоматическая блокировка IP-адресов, попытки входа с которых постоянно завершаются неудачно. Существует несколько программ, которые это делают, одна из самых популярных – fail2ban (www.fail2ban.org). Эта программа, как и ее аналоги, сканирует лог-файлы на наличие признаков подозрительной активности. Для SSH это множественные попытки подключения с разными именами пользователя с одного и того же IP-адреса. При обнаружении подозрительного поведения она создает правило брандмауэра, которое блокирует все подключения с этого адреса на заданный период времени. Можно настроить и другие действия, например, отправку письма, но блокирование на уровне брандмауэра используется по умолчанию. Настройки по умолчанию охватывают популярные серверы, в том числе SSH, а также web-сервер Apache. Большинству пользователей достаточно установить программу из менеджера пакетов и убедиться, что сервис запускается при загрузке системы. Также можно установить программу вроде Logwatch (www.logwatch.org), которая просматривает файлы журналов и ежедневно отправляет суммарный отчет обо всей системной активности.
Программа, на которую стоит обратить внимание всем пользователям SSH – screen (www.gnu.org/software/screen). Если вы запускаете программу в удаленной оболочке и сетевое соединение разрывается, оболочка завершится со всеми программами, которые были в ней запущены. Screen называют мультиплексором терминалов, т. е. вы запускаете его в оболочке, и на первый взгляд ничего не меняется, но теперь вы находитесь в сессии screen. Запустите программу и нажмите Ctrl + A, затем D, и сессия терминала исчезнет. Выполните команду screen -r
и сессия терминала появится снова с запущенной в ней программой, как будто никуда не исчезала. Это особенно удобно с SSH, потому что можно войти в систему, запустить screen и выполнять все необходимые действия. Если подключение SSH будет прервано, можно переподключиться и выполнить команду screen -r. Это даже не обязательно делать с того же самого компьютера.
Толпа SSH
Обычно с помощью SSH мы подключаемся с одного компьютера к другому, но что если нужно запустить команду на нескольких компьютерах сети? Сделать это можно с dsh (www.netfort.gr.jp/~dancer/software/dsh.html.en), разновидностью распределенной оболочки. Основной формат команды таков:
dsh -m user1@host1 -m user2@host2 command
Хостов можно указать любое количество. С dsh вам ох как пригодится аутентификация с помощью ключей, иначе придется набирать огромное количество паролей. Чтобы каждый раз не набирать имена хостов, можно добавить их в группу в файле в каталоге /etc/dsh/groups/:
user1@host1
user2@host2
host3
Для последнего хоста работает обычное правило SSH, при котором используется текущее имя пользователя, если оно не указано. Запустите dsh следующим образом:
dsh -g groupname command
Здесь groupname – имя файла в /etc/dsh/groups; только имя, а не полный путь. Также в файле /etc/dsh/machines.list можно задать группу по умолчанию, а затем запустить ту же команду для всех хостов этой группы:
dsh -a command Обычно команда запускается на всех компьютерах одновременно. Это самый быстрый способ, но он не слишком хорош, если команды генерируют большой объем выходных данных.
В начале каждой строки указывается имя компьютера, на котором запущена команда, но если выводимых строк много, то здесь легко запутаться. В этом случае укажите параметр -w, чтобы dsh ожидала завершения команды на каждом компьютере и только потом запускала ее на следующем. Этот и другие параметры можно задать как используемые по умолчанию в /etc/dsh/dsh.conf

Автор: forkA Просмотров: 2830


Рейтинг статьи: 0

Общий рейтинг из всех статей автора :
{0 [30]} [ - - - - - - - - - - ]

Общий рейтинг из всех статей на сайте :
{0 [888]} [ - - - - - - - - - - ]

[?]
Комментарии 1

lastJ

спасибо за инфу, как раз то что искал

0
Статистика комментария: Голосов: 0 Пользователей +/-: 0/0 Гостей +/-: 0/0

Добавить комментарий к статье


Ctrl+Enter

Для активации кнопки, введите символы, которые Вы видите на картинки.

новая

тема

Заметки на тему IT

Монитор поиска
[x]
Новое сообщение

Сообщения в чате

Вы спрашиваете у гостей/у зарегистрированных/ У Вас спрашивают
всем Ctrl+Enter
зарегистрированным Ctrl+Enter
Ctrl+Enter

Краткая инструкция по работе с чатом

  • Вы должны ввести имя, которое будет запомнено и применяться для чата и комментариев на сайте.
  • Выбрать одну из возможностей
    "Вы спрашиваете у гостей/
    у зарегистрированных/
    У Вас спрашивают"
  • Кликните на один из способов и появиться дополнительная информация