Putty и *nix'ы

FreeBSD и Linux по-разному работают с SSH. Это связано с тем, что Linux уже давно перешёл на кодировку UTF-8, а FreeBSD так и ограничился обещаниями, оставшись и в 9 версии на KOI8-R. А так же описывается авторизация на основе ключей и дополненная версия putty - kitty.

Настройки для Linux (у меня зовётся UTF-8):
  • Terminal - Keyboard - The Function keys and keypad - Linux
  • Window - Appearance - Change - Набор символов - Кириллица
  • Window - Translation - UTF-8
  • Connection - Data - Terminal-type string - linux (при этом значении работает псевдографика, но перестаёт работать динамический заголовок, отражающий текущее состояния - пользователь и папка либо исполняемая команда... если важнее данный вариант, то имеет смысл создать альтернативный профиль со значением этого параметра xterm, данный профиль называется у меня UTF-8-)
Настройки для FreeBSD:
  • Terminal - Keyboard - The Function keys and keypad - Xterm R6
  • Window - Appearance - Change - Набор символов - Кириллица
  • Window - Translation - KOI8-R
  • Connection - Data - Terminal-type string - putty
Авторизация на основе ключей даёт небольшие плюшки:
  • не светишь пароль от пользователя ни пользователям ни при использовании самим;
  • "двухфакторная" авторизация (на основе файла ключа и пасса к нему);
  • возможность выдавать несколько ключей на 1 пользователя и отзывать их по-отдельности при необходимости;
  • если доверенный пользователь не знает пароля от пользователя в системе (если он он на всех серверах один), то имея разрешение на доступ к 1 серверу, он не сможет получить доступ к остальным (если его ключ прописан только на нужном ему сервере).
Ключи можно создать как в Linux, так и в самом putty (но тут прийдётся взять программку из полного комплекта - PUTTYGEN.EXE). Размер генерируемого DSA-ключа в Linux ограничен 1024-bit, что не распространяется на RSA. Хотя использовать можно ключ любого размера.
Ключ из соображений безопасности я предпочитаю делать 2048-bit. DSA является более надёжным, поэтому при генерировании ключа в putty, я предпочитаю именно его. Так же имеет смысл защищать ключ паролем, но не тем же, что и пользователя root, ибо это лишает плюшек...
Генерирование ключа в linux:
  1. # ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_dsa
  2. Получаем 2 файла id_dsa (приватный ключ) и id_dsa.pub в папке пользователя ~/.ssh
  3. Содержимое файла id_dsa.pub необходимо запихать на сервер в файл ~/.ssh/authorized_keys пользователю, который будет его использовать (# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys)
Генерирование ключа c puttygen.exe на Windows:
  1. Parameters - SSH-2 DSA
  2. Number of bits in a generated key - 2048
  3. Нажимаем Generate и активно шевелим мышку для генерирования случайной части ключа
  4. Добавляем комментарий к ключу (чтоб отличать хоть как-то разные ключи) в поле Key comment
  5. Придумываем пароль для защиты ключей и вводим его в поля Key passphrase и Confirm passphrase (если оставить пустым, то при подключении он не будет спрашивать пароль, но для подключения достаточно будет заполучить ваш файл с приватным ключём)
  6. Содержимое Public key for pasting into OpenSSH authorized_keys file необходимо запихать на сервер в файл ~/.ssh/authorized_keys пользователю, который будет его использовать
  7. Далее нажать Save private key и сохранить его в надёжном месте
Подключение к удалённому серверу из Linux:
  • # ssh -i ~/.ssh/id_dsa user@server
Подключение к удалённому серверу из putty:
  • Connection - SSH - Auth - Private key file for authentication - [выбрать сохранённый ранее приватный ключ]
  • Чтобы не вводить пароль ключа при подключении можно использовать ярлык putty с параметром -pw [пароль от ключа]
В качестве клиента на Windows я предпочитаю использовать модифицированный putty - kitty. У него есть куча мелких плюшек, в т.ч. небольшой чат сервер и клиент. Клиент подключается к серверу на порт 1987 используя telnet.
Для включения сервера необходимо:
  1. Добавить в реестр [HKEY_CURRENT_USER\Software\9bis.com\KiTTY] REG_SZ "chat"="1"
  2. Подключиться к 127.0.0.1 на порт 1987 используя telnet
Для более комфортного ввода сообщения использовать комбинацию CTRL + F8

SSH Public Key Authentication - полезная статья на тему ключей.

Так же для управления сессиями удалённых подключений рекомендую посмотреть на mRemoteNG. При использовании ключей в качестве пароля надо использовать пароль ключа.

Можно подкрутить немного сервер:
PubkeyAuthentication yes #разрешаем ключи
AuthorizedKeysFile .ssh/authorized_keys #фиксируем файл с публичными ключами
PermitRootLogin no #запрещаем root по ssh
UsePAM no #запрещаем подключение без сертификатов