SSH Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:ssh [2012/12/07 21:56]
[Установка]
wiki:ssh [2018/04/09 23:58] (текущий)
[SSH aliases]
Строка 21: Строка 21:
 ===== Настройка сервера ===== ===== Настройка сервера =====
  
-SSH-сервер автоматически прописывается в автозагрузку ​при установке. Управлять его запуском/остановкой или перезапуском можно ​при ​помощи команд:​+При установке ​SSH-сервер автоматически прописывается в автозагрузку. Управлять его запускомостановкой или перезапуском можно ​с помощью команд:​
 <​code=bash>​ <​code=bash>​
 sudo service ssh stop|start|restart ​ sudo service ssh stop|start|restart ​
 </​code>​ </​code>​
-Основным файлом конфигурации SSH-сервера ​является ​файл ''/​etc/​ssh/​sshd_config'', ​который должен быть ​доступным для чтения/редактирования только [[суперпользователь_в_ubuntu|суперпользователю]]. +Основной файл конфигурации SSH-сервера ​— файл ''/​etc/​ssh/​sshd_config'',​ доступный для чтения ​или ​редактирования только [[суперпользователь_в_ubuntu|суперпользователю]]. 
-После каждого изменения этого файла необходимо перезапустить ssh-сервер для применения изменений. ​Вот пример конфигурации SSH-сервера по умолчанию ​в Ubuntu((Переведено с оригинального man sshd_config в Ubuntu 9.10. Добавлены дополнительные коментарии.)):​+После каждого изменения этого файла необходимо перезапустить ssh-сервер для применения ​таких ​изменений. ​ 
 + 
 +Пример конфигурации SSH-сервера ​в Ubuntu ​по умолчанию((Переведено с оригинального man sshd_config в Ubuntu 9.10. Добавлены дополнительные коментарии.)):​
 <​file>​ <​file>​
 #     ​Пример конфигурации open-ssh сервера с русскими ​     # #     ​Пример конфигурации open-ssh сервера с русскими ​     #
Строка 942: Строка 944:
 </​file>​ </​file>​
  
-Вы можете ​скопировать приведенный выше текст в ваш ''​sshd_config''​ и использовать в дальнейшем для настройки.+Можно скопировать приведенный выше текст в ваш ​собственный ​''​sshd_config''​ и использовать в дальнейшем для настройки.
  
 ===== Рекомендуемые параметры. Безопасность ===== ===== Рекомендуемые параметры. Безопасность =====
Строка 966: Строка 968:
 ==== Запрещение удаленного доступа для суперпользователя ==== ==== Запрещение удаленного доступа для суперпользователя ====
  
-По умолчанию root-доступ ​разрешен. Это означает, что клиент при ​подключении в качестве ​пользователя может указать root, и во многих случаях получить контроль над системойПри условии,​ что по умолчанию в Ubuntu пользователь,​ добавленный при установке системы имеет возможность решать все административные задачи через sudo, создавать возможность root доступа к системе ​как минимум странно. Рекомендуется отключить эту опцию ​совсем, или применять ее только в режиме ''​forced-commands-only''​. Отключить root-доступ можно так:+По умолчанию root-доступ запрещен по паролю (по ключу - можно) - опция PermitRootLogin установлена в without-password((В более ​старых версиях ​и на некоторых других ​дистрибутивах может стоять и вовсе '​yes'​.)). Но, при условии,​ что по умолчанию в Ubuntu пользователь,​ добавленный при установке системы имеет возможность решать все административные задачи через sudo, создавать возможность root доступа к системе ​через ssh - выглядит неразумно (даже при аутентификации по ключу). Рекомендуется ​совсем ​отключитьэту опцию, или применять ее только в режиме ''​forced-commands-only''​. Отключить root-доступ можно так:
 <​file>​ <​file>​
 PermitRootLogin no PermitRootLogin no
Строка 1021: Строка 1023:
  
 ==== Еще про безопасность ==== ==== Еще про безопасность ====
 +[[http://​rus-linux.net/​nlib.php?​name=/​MyLDP/​sec/​openssh.html|20 советов по безопасному использованию сервера OpenSSH]]
 FIXME FIXME
  
Строка 1070: Строка 1072:
 <​code=bash>​ssh-keygen -t rsa</​code>​ <​code=bash>​ssh-keygen -t rsa</​code>​
 Получаем предложение ввести пароль для защиты файла ключа (оказывается полезным при попадании файла в чужие руки). Если мы собираемся по SSH выполнять скрипты,​ то оставляем пустым. Получаем предложение ввести пароль для защиты файла ключа (оказывается полезным при попадании файла в чужие руки). Если мы собираемся по SSH выполнять скрипты,​ то оставляем пустым.
-Передаём ключ на сервер командой +Передаём ​публичный ​ключ на сервер командой 
-<​code=bash>​ssh-copy-id -i ~/​.ssh/​id_rsa user@server</​code>​+<​code=bash>​ssh-copy-id -i ~/​.ssh/​id_rsa.pub user@server</​code>​
 Всё, можно заходить. Всё, можно заходить.
  
 Когда ssh работает на нестандартном порту: Когда ssh работает на нестандартном порту:
-<​code=bash>​ssh-copy-id -i "​$IDENTITY" ​"​-p ​$SSH_PORT $SSH_USER@$SSH_HOST"</​code>​ +<​code=bash>​ssh-copy-id -i ~/​.ssh/​id_rsa.pub ​"​-p ​port user@server"</​code>​ 
-<note tip>Следует помнить,​ что символ '​~'​ теряет смысл при экранировании. +<note tip>​Если возникает ошибка:​
- +
-Если возникает ошибка:​+
 <​code>​Bad port 'umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/​authorized_keys'</​code>​ <​code>​Bad port 'umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/​authorized_keys'</​code>​
 попробуйте взять параметры в кавычки:​ попробуйте взять параметры в кавычки:​
-<​code=bash>​ssh-copy-id '​-i ​"​$IDENTITY"​ "-p $SSH_PORT $SSH_USER@$SSH_HOST"'<​/code> +<​code=bash>​ssh-copy-id '-i /home/user/​.ssh/​id_rsa.pub ​"-p port user@server"'​</​code>​
-вот тут: http://​mikegerwitz.com/​2009/​10/​07/​ssh-copy-id-and-sshd-port/​ +
-приводится пример:​ +
-<​code=bash>​ssh-copy-id ‘-p XXXX -i ~/​.ssh/​id_rsa.pub ​username@host’</​code>​ +
-Если возникает ошибка +
-<​code>​Warning:​ Identity file ~/​.ssh/​id_rsa not accessible: No such file or directory.</​code>​ +
-то необходимо прописать полный путь до файла ключа.+
 </​note>​ </​note>​
 Удобно при подключени на удалённой системе пользоваться [[wiki:​screen|утилитой screen]]. Удобно при подключени на удалённой системе пользоваться [[wiki:​screen|утилитой screen]].
-==== Настройка удаленной ssh-папки в Nautilus ====+==== Настройка удаленной ssh-директории в Nautilus ==== 
 +Смотрите статью [[nautilus#​Подключение к удаленным серверам|Nautilus]]. 
 +==== Монтирование удаленной директории с помощью sshfs ==== 
 +Монтирование удаленного каталога в локальный каталог <code bash>​sshfs user@hostingserver.ru:/​home/​userdir ~/​sshfsdir</​code>​ 
 +Размонтирование <code bash>​fusermount -u ~/​sshsfdir</​code>​ 
 +==== SSH aliases ==== 
 +При использовании нескольких серверов с различными параметрами доступа (нестандартный порт, длинное имя хоста, логин отличный от локального,​ и т.п.) порой утомительно вводить все настройки подключения каждый раз заново. Для облегчения этого можно использовать aliases.
  
-FIXME+Настройки хранятся в ''​~/​.ssh/​config''​ для одного пользователя и в ''/​etc/​ssh/​ssh_config''​ глобально для всех пользователей. 
 + 
 +Пример конфига. Описано может быть множество серверов. Подробнее в **man ssh_config** (не путать с **sshd_config**) 
 + 
 +<​code>​Host AliasName # Произвольное имя хоста 
 +HostName 1.2.3.4 # Можно указывать как IP, так и hostname (если работает DNS) 
 +User YourUserName # Если пользователь не совпадает с локальным пользователем 
 +Port YourSSHPort # Если нестандартный порт</​code>​
  
-==== Монтирование удаленной папки с помощью sshfs ==== +После этого можно подключаться к серверу командой <code bash>ssh AliasName</​code>​
-монтируем удаленную папку в директорию ​след образом:<​code bash>​sshfs user@hostingserver.ru:/​home/​userdir ~/​sshfsdir</​code>​ +
-умоунт осуществляется следующей ​командой:<code bash>fusermount -u ~/sshsfdir</​code>​+
 ==== ssh-agent ==== ==== ssh-agent ====
  
Строка 1110: Строка 1115:
 <​code>​man ssh <​code>​man ssh
 man sshd</​code>​ man sshd</​code>​
 +
 +======Использование смарт-карт======
 +
 +1. Создание сертификата и экспорт открытого ключа, а также клиентская часть на Windows + Putty SC описано на сайте:
 +http://​habrahabr.ru/​post/​88540/​
 +Описанное там дополнение Key Manager доступно только в старых версиях Firefox. Проверено на версии 3.5 для Windows.
 +Прямая ссылка на дополнение:​ https://​addons.mozilla.org/​ru/​firefox/​addon/​key-manager/​
 +
 +2. Подготовка сервера. Вам необходимо убедиться что в конфигурации sshd разрешена аутентификация при помощи публичных ключей. Для этого необходимо в файле «sshd_config» указать значение параметра «PubkeyAuthentication» в «yes».
 + ​Затем в файл "​~/​.ssh/​authorized_keys"​ добавляем наш публичный ключ полученный ранее (одной строкой). Обратите внимание,​ файл "​.ssh/​authorized_keys"​ находится в домашнем каталоге того пользователя,​ который потом будет логиниться по публичному ключу.
 +
 +3. Клиентская часть на Linux. Потребуется пересборка пакета OpenSSH без параметров. Рекомендуется только указать префиксы каталогов,​ например --prefix=/​usr. Также следует учесть,​ что файлы конфигов будут в /usr/etc.
 +Перед началом необходимы пакеты:​ opensc-lite-devel,​ zlib-devel, openssl-devel.
 +Устанавливаем драйвер смарт-карты.
 +Для удобства в конфиге ssh_config (не путать с sshd_config) указать путь к библиотеке pkcs:
 +PKCS11Provider=<​путь к библиотеке>​
 +
 +4. На клиенте запускаем
 +ssh user@host
 +Если смарт-карта (токен) подключена,​ будет запрошен пароль и выполнен вход в сессию SSH. 
 +
 +======Возможные проблемы при использовании======
 +
 +Привычная комбинация клавиш <​key>​Ctrl</​key>​+<​key>​s</​key>,​ используемая во многих редакторах для сохранения исправлений,​ при работе в терминале с ssh-cервером приведёт к выполнению команды XOFF что внешне напоминает зависание сессии. ​ Однако это не так. Сервер продолжает принимать вводимые символы и команды,​ но не выводит это на экран. Что бы выйти из такого затруднительного положения достаточно применить комбинацию <​key>​Ctrl</​key>​+<​key>​q</​key>,​ тем самым включив режим XON обратно.
 ===== Ссылки ===== ===== Ссылки =====
 +  * [[http://​help.ubuntu.ru/​wiki/​fail2ban|Fail2ban]]
   * [[http://​www.nestor.minsk.by/​sr/​2007/​11/​sr71104.html|Хитрости SSH]]   * [[http://​www.nestor.minsk.by/​sr/​2007/​11/​sr71104.html|Хитрости SSH]]