Вчера весь день посвятил настройке доступа по ключу, долго не мог добиться, чтобы сервер принял ключ. В интернете масса статей и гайдов по настройке ssh1, но! Мы, корейские пионеры не ищем лёгких путей и у нас запущен и работает sshd2 и возврата к первой версии не предвидится.
Дело в том, что процедура настройки немного, но отличается в ssh1 и ssh2. Итак, к делу.
1. На сервере, под учёткой простого смертного:
cd ~/.ssh2
rm ./* (Это, конечно, не обязательно, просто чтобы не путаться после предыдущих неудачных экспериментов).
ssh-keygen2 # Вот именно, 2! Passphrase я делал пустую, иначе он будет её запрашивать каждый раз, а мы как раз от этого и хотим уйти.
Создадутся два (а точнее 3, но нас интересуют только 2) файлика вида id_xxx_xxxх_х и id_xxx_xxxх_х.pub, по расширению понимаем, что это за ключи, какой из них какой.
echo 'Key id_xxx_xxxx_x.pub' >> ./authorization (по умолчанию такой файл ищет демон в папке пользователя)
Вот в этом и состоит главное отличие в настройке ssh2 от ssh1 (в рамках топика) - формат и название этого файла (authorization, а не athorized_keys как раньше, хотя назвать его можно как угодно, главное - не забыть сообщить об этом серверу в конфиге, по умолчанию он authorization).
Итого, имеем 4 файла в ~/.ssh2/: authorization, 2 ключа и random_seed. Всё, этого достаточно.
chmod 0600 ./*
chmod 0700 ./
2. Копируем приватный ключ на машину с виндой, туда, где putty
На машине с putty проделываем следующее:
3. Находим где-нибудь puttygen.exe
4. В него загружаем приватный ключ (делаем импорт).
5. Сохраняем приватный ключ (с расширением ppk), публичный нам не нужен и серверу он тоже не нужен, поэтому не сохраняем публичный ключ.
Вроде всё. Настраиваем в putty автоввод имени пользователя, чей ключ мы импортировали, подцепляем свежеиспечённый .ppk и радуемся.
Я ещё до кучи для пущей крутизны отключил доступ по логину и паролю на сервере, поэтому зайти теперь удалённо могу только я со своим ключом.
Для не-виндовс клиентов действия следующие:
На клиенте делаем
cd ~/.ssh2/
ssh-keygen2 (можно указать -t, но меня вполне устраивают 2048 битные dsa-ключи)
echo "IdKey id_xxx_xxxx_x.pub" >> ./identification
С клиентом пока всё.
Копируем id_xxx_xxxx_x.pub на сервер, в каталог .ssh2 того пользователя, от имени которого будем осуществлять вход. Я делал с сервера: scp2 -l username -P port remote_host:/home/username/.ssh2/key.pub ~/.ssh2/ Разумеется, remote_host (в данном контексте - клиентская машина), port и username у каждого в жизни свои.
Далее, на сервере:
cd ~/.ssh2
echo "key id_xxx_xxxx_x.pub" >> ./authorization
На сервере всё.
Подключаемся с клиента: ssh2 -l username remote_host
Итожим:
1. создать на клиенте пару ключей
2. отправить public key на сервер
3. прописать полученный public key на сервере в файле ~/.ssh2/authorization
4. прописать private и public key на клиенте в файле ~/.ssh2/identification или, если putty, то добавить его в Connection -> SSH -> Auth
Дело в том, что процедура настройки немного, но отличается в ssh1 и ssh2. Итак, к делу.
1. На сервере, под учёткой простого смертного:
cd ~/.ssh2
rm ./* (Это, конечно, не обязательно, просто чтобы не путаться после предыдущих неудачных экспериментов).
ssh-keygen2 # Вот именно, 2! Passphrase я делал пустую, иначе он будет её запрашивать каждый раз, а мы как раз от этого и хотим уйти.
Создадутся два (а точнее 3, но нас интересуют только 2) файлика вида id_xxx_xxxх_х и id_xxx_xxxх_х.pub, по расширению понимаем, что это за ключи, какой из них какой.
echo 'Key id_xxx_xxxx_x.pub' >> ./authorization (по умолчанию такой файл ищет демон в папке пользователя)
Вот в этом и состоит главное отличие в настройке ssh2 от ssh1 (в рамках топика) - формат и название этого файла (authorization, а не athorized_keys как раньше, хотя назвать его можно как угодно, главное - не забыть сообщить об этом серверу в конфиге, по умолчанию он authorization).
Итого, имеем 4 файла в ~/.ssh2/: authorization, 2 ключа и random_seed. Всё, этого достаточно.
chmod 0600 ./*
chmod 0700 ./
2. Копируем приватный ключ на машину с виндой, туда, где putty
На машине с putty проделываем следующее:
3. Находим где-нибудь puttygen.exe
4. В него загружаем приватный ключ (делаем импорт).
5. Сохраняем приватный ключ (с расширением ppk), публичный нам не нужен и серверу он тоже не нужен, поэтому не сохраняем публичный ключ.
Вроде всё. Настраиваем в putty автоввод имени пользователя, чей ключ мы импортировали, подцепляем свежеиспечённый .ppk и радуемся.
Я ещё до кучи для пущей крутизны отключил доступ по логину и паролю на сервере, поэтому зайти теперь удалённо могу только я со своим ключом.
Для не-виндовс клиентов действия следующие:
На клиенте делаем
cd ~/.ssh2/
ssh-keygen2 (можно указать -t, но меня вполне устраивают 2048 битные dsa-ключи)
echo "IdKey id_xxx_xxxx_x.pub" >> ./identification
С клиентом пока всё.
Копируем id_xxx_xxxx_x.pub на сервер, в каталог .ssh2 того пользователя, от имени которого будем осуществлять вход. Я делал с сервера: scp2 -l username -P port remote_host:/home/username/.ssh2/key.pub ~/.ssh2/ Разумеется, remote_host (в данном контексте - клиентская машина), port и username у каждого в жизни свои.
Далее, на сервере:
cd ~/.ssh2
echo "key id_xxx_xxxx_x.pub" >> ./authorization
На сервере всё.
Подключаемся с клиента: ssh2 -l username remote_host
Итожим:
1. создать на клиенте пару ключей
2. отправить public key на сервер
3. прописать полученный public key на сервере в файле ~/.ssh2/authorization
4. прописать private и public key на клиенте в файле ~/.ssh2/identification или, если putty, то добавить его в Connection -> SSH -> Auth
Уже тогда поди была доступна команда ssh-copy-id (или ssh2-copy-id), странно, что мне она не попалась.
ОтветитьУдалить