Содержание |
Для запуска sshd на FreeBSD при каждом старте системы в /etc/rc.conf добавляем строку
sshd_enable="YES"
При следующей загрузке системы будут сгенерированы ключи хоста, если их нет.
На Linux прописать соответствующий симлинк в нужном runlevel или во всех. Должно получиться что то вроде такого:
$ ls /etc/rc*/*sshd /etc/rc0.d/K26sshd /etc/rc2.d/S54sshd /etc/rc4.d/S54sshd /etc/rc6.d/K26sshd /etc/rc1.d/K26sshd /etc/rc3.d/K26sshd /etc/rc5.d/K26sshd
Впрочем, развитые гуёвые конфигурялки пропишут что где надо, а в некоторых дистрибутивах ssh вобще включен по дефолту.
~/.rhosts - определяет адрес машины и имя пользователя, с которой данному пользователю открыт доступ.
~/.shosts - аналогичен .rhosts, но предназначен исключительно для ssh.
Формат: имя_хоста имя_юзера.
user1.test.ru user1 userstend.test.ru user1
/etc/hosts.equiv - также содержит пары имя машины/имя пользователя, но имеет эффект на всех пользователей.
/etc/shosts.equiv - аналог hosts.equiv, но применяется только ssh.
Формат: [+|-] имя_хоста имя_юзера.
+ user1.test.ru user1 - server.test.ru xakep
+ - разрешение; - - запрет
/etc/ssh/ssh_known_hosts и ~/.ssh/known_hosts - содержат список адресов и соответствующих им публичных ключей.
Формат: адрес (или адреса, разделённые запятой), публичный ключ для него одной(!) строкой и дополнительное поле комментариев (необязательно). Адрес клиента должен быть в полном формате (name.domain), иначе могут быть проблемы. Кроме этого, в адресе можно использовать шаблоны * и ?.
user1.test.ru {SOME_VERY_LONG_PUBLIC_KEY}
Обычно, через некоторое время, при бездействии пользователя (терминала) сервер закрывает сессию. Можно попробовать отредактировать в файле /etc/ssh/sshd_config параметры:
Затем следует перезапустить SSH-сервер:
$ sudo service sshd restart
Команда ssh-keygen
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/vk/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/vk/.ssh/id_rsa. Your public key has been saved in /home/vk/.ssh/id_rsa.pub. The key fingerprint is: fb:b3:48:d1:65:86:5c:12:d7:c3:ad:ea:a5:1e:0a:32 vk@vk-pc.local
Иногда может потребоваться указать тип генерируемого ключа (по алгоритму RSA)
$ ssh-keygen -t rsa
Для размещения первого ключа достаточно выполнить команду scp - безопасное копирование.
$ scp ~/.ssh/id_rsa.pub username@server.name:~/.ssh/authorized_keys Password: id_rsa.pub 100% 396 0.4KB/s 00:00
Если имя пользователя совпадает с текущим, то его можно не указывать.
Права на файл authorized_keys должны быть 600, на папку .ssh должны быть 700 - для ограничения доступа посторонних.
Директория ~/.ssh на удаленном сервере должна быть создана заранее, иначе будет сообщение об ошибке. Именно там должен быть размещен файл authorized_keys с ключами. Остальные ключи необходимо дописать в этот же файл.
$ ssh user@host "cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_rsa.pub
В некотроых системах существует скрипт ssh-copy-id. Кроме копирования он так же устанавливает правильные права на файл.
$ ssh-copy-id -i .ssh/id_rsa.pub user@server.name
Для начала необходимо установить поддержку sshfs
$ sudo apt-get install sshfs
И загрузить модуль fuse
$ sudo modprobe fuse
Теперь можно попытаться смонтировать
$ sshfs remoteuser@server.domain:/path/to/folder/on/remote/server /path/to/local/mount/point
Если будет ругань на нехватку прав на устройство /dev/fuse, нужно добавить юзера в группу fuse
Протокол SSH предусматривает возможность выполнить команду на удалённой машине, получив результат на машине клиента (терминале). Пример
$ ssh user@server 'ls -l /path/to/dir'
Однако, в некоторый случаях программе (скрипту) на удалённой машине требуется выполнить вывод в консоль, а она как бы не существует. Например, при использовании sudo в вызываемом скрипте. В таком случае возможно сообщение об ошибке вроде такого: sudo: no tty present and no askpass program specified. Ключик -t (принудительное использование терминала) скорей всего решит проблему:
$ ssh user@server 'ls -l ~/path/to/my_script param1 param2'
Здесь локальный порт 12345 будет проброшен на порт 3306 на remote.host. Таким образом, подключаясь на 127.0.0.1:12345 можно работать с удаленной БД "локально".
$ ssh -L 12345:localhost:3306 user@remote.host
В следующем примере локальный порт 12345 (допустим, с домашнего компьютера) будет проброшен на порт 22 internalhost.local (компьютера из рабочей локальной сети) через шлюз remote.host той самой сети. Таким образом, подключиться к удаленной машине можно 'ssh -p 12345 localhost'.
$ ssh -L 12345:internalhost.local:22 user@remote.host
Подготовка туннеля с внутреннего хоста из удаленной локальной сети через шлюз на локальную машину:
$ ssh -fNL 12345:internal.local:22 user@remote.host
Запуск приложения VirtualBox на удаленной машине с выводом графики на локальную:
$ ssh -YvCp 12345 username@localhost VirtualBox