LinuxForum.Fans
Тема

Не пускает ssh по ключу

Автор: lone_wolf 13 сообщений 3846 просмотров
#266297

Вообщем хочу сделать без парольный вход на сервер, генерю 2 ключа:
публичный ложу на сервер а секретный оставляю у клиента, на директории .ssh ставлю права 700 а на файлы ключей ставлю права 600.
на сервере в sshd_config

text
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

в итоге при попытке законектится оно у меня все равно просит ввести пароль. В чем может быть косяк ?

#266298
"lone_wolf" написал:
В чем может быть косяк ?

Покажите полный вывод команды подключения, используйте опцию -v.

#266322

вот :

Показать
text
[root@gate lwolf]# ssh -v -i /etc/igor_key igor@gate.example.com.ua
OpenSSH_3.7.1p2, SSH protocols 1.5/2.0, OpenSSL 0.9.6b [engine] 9 Jul 2001
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to gate.example.com.ua [1.1.1.1] port 22.
debug1: Connection established.
debug1: identity file /etc/igor_key 0
debug1: Remote protocol version 1.99, remote software version OpenSSH_3.7.1p2
debug1: match: OpenSSH_3.7.1p2 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_3.7.1p2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'gate.example.com.ua' is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:19
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interacti                                                                                        ve
debug1: Next authentication method: publickey
debug1: Next authentication method: keyboard-interactive
Password:

#266335

А вы когда ключи создавали, пароль на ключ задавали?

#266339

Покажите

text

ls -l /etc/igor_key

и на сервере

text

ls -l /home/igor/.ssh/
#266348

поначалу да, но потом переделал ключи где на вопрос установки пароля я просто кликал enter.

text
ls -l /home/igor/.ssh/
-rw-------    1 igor   igor        345 Jul 20 21:06 authorized_keys
text
ls -l /etc/igor_key
-rw-------    1 root     root          541 Jul 20 22:34 /etc/igor_key
#266361

А как ключи то хоть создавала, в конфиге указали то что ключ будет лежать в иной директории?
Подсказка:
тыц и тыц

#266366

Давайте убедимся, что говорим об одних и тех же файлах:

— допустим командой

text

ssh-keygen -t rsa

вы создали пару ключей — id_rsa (приватный) и id_rsa.pub (публичный), по умолчанию, оба ключа записываются в пользовательский каталог ~/.ssh. Если вы оставите парольную фразу пустой, SSH не потребует дополнительной идентификации пользователя при входе в систему.

— командой

text
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host

скопируйте публичный ключ на удалённый компьютер в домашний каталог пользователя, к которому будете в дальнейшем подключаться. Использование ssh-copy-id гарантирует, что публичный ключ получит правильные права доступа на удаленном хосте, но ничто не мешает сделать это вручную, но тогда публичный ключ на удалённом компьютере нужно переименовать вручную в ~/.ssh/authorized_keys (в соответствии с настройками, указанными в /etc/ssh/sshd_config на удалённом компьютере).

Вот воспроизвёл у себя:

— удалённый компьютер, домашний каталог пользователя lupo:
[console]lupo@gentoo-home ~ % ls -l ~/.ssh
итого 0[/console]

— локальный компьютер, домашний каталог root:
[console]gentoo-laptop ~ # ls -l /root/.ssh
итого 0[/console]

— создаю пару ключей на локальном компьютере:
[console]
gentoo-laptop ~ # ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
cd:28:90:ea:66:21:ee:1b:95:e3:06:ff:fc:21:17:e5 root@gentoo-laptop
The key's randomart image is:
+--[ RSA 2048]----+
| |
| . |
| o . |
| ... o+ |
|..o+ ..SEo |
|.o=.. .. |
| o++ . o |
|.oo o o . |
| o. o.. |
+-----------------+
[/console]
[console]
gentoo-laptop ~ # ls -l /root/.ssh
итого 8
-rw------- 1 root root 1679 Июл 25 09:48 id_rsa
-rw-r--r-- 1 root root 400 Июл 25 09:48 id_rsa.pub
[/console]

— копирую ключ на удалённый компьютер:
[console]
gentoo-laptop ~ # ssh-copy-id -i /root/.ssh/id_rsa.pub lupo@gentoo-home
The authenticity of host 'gentoo-home (192.168.1.110)' can't be established.
ECDSA key fingerprint is 90:12:86:28:53:96:90:66:d7:eb:01:b9:f2:a7:cd:37.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gentoo-home,192.168.1.110' (ECDSA) to the list of known hosts.
Password:
Now try logging into the machine, with "ssh 'lupo@gentoo-home'", and check in:

~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.
[/console]
[console]
lupo@gentoo-home ~ % ls -l ~/.ssh
итого 4
-rw------- 1 lupo lupo 400 июля 25 09:50 authorized_keys
[/console]
Внимание: в данном случае нужно будет ввести сначала yes, разрешая подключение, а затем пароль удалённого пользователя.

— проверяем подключение
[console]
gentoo-laptop ~ # ssh 'lupo@gentoo-home'
Last login: Wed Jul 25 09:50:04 FET 2012 from gentoo-laptop.ha0s.net on ssh
lupo@gentoo-home ~ %
[/console]

Ну, или воспроизводя вашу ситуацию:

[console]
gentoo-laptop ~ # mv /root/.ssh/id_rsa /tmp/lupo.key
gentoo-laptop ~ # ssh -i /tmp/lupo.key lupo@gentoo-home
Last login: Wed Jul 25 09:54:23 FET 2012 from gentoo-laptop.ha0s.net on pts/1
lupo@gentoo-home ~ %
[/console]

#266369

да совершено верно я так и делаю. только на удаленный компьютер копирую с помощью scp. Потом переименовую и потом устанавливаю вручную права. Прост у меня нет команды ssh-copy-id к сожалению. И да я указываю при подключении путь к файлу с помощью ключа -i.

#266372
"lone_wolf" написал:
Прост у меня нет команды ssh-copy-id к сожалению.

Дарю :D

text

#!/bin/sh

# Shell script to install your public key on a remote machine # Takes the remote machine name as an argument. # Obviously, the remote machine must accept password authentication, # or one of the other keys in your ssh-agent, for this to work.

ID_FILE="${HOME}/.ssh/id_rsa.pub"

if [ "-i" = "$1" ]; then shift # check if we have 2 parameters left, if so the first is the new ID file if [ -n "$2" ]; then if expr "$1" : ".*\.pub" > /dev/null ; then ID_FILE="$1" else ID_FILE="$1.pub" fi shift # and this should leave $1 as the target name fi else if [ x$SSH_AUTH_SOCK != x ] && ssh-add -L >/dev/null 2>&1; then GET_ID="$GET_ID ssh-add -L" fi fi

if [ -z "`eval $GET_ID`" ] && [ -r "${ID_FILE}" ] ; then GET_ID="cat \"${ID_FILE}\"" fi

if [ -z "`eval $GET_ID`" ]; then echo "$0: ERROR: No identities found" >&2 exit 1 fi

if [ "$#" -lt 1 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then echo "Usage: $0 [-i [identity_file]] [user@]machine" >&2 exit 1 fi

# strip any trailing colon host=`echo $1 | sed 's/:$//'`

{ eval "$GET_ID" ; } | ssh $host "umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys" || exit 1

cat <<EOF Now try logging into the machine, with "ssh '$host'", and check in:

~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

EOF

Убедитесь, что на удалённый(!) компьютер в каталог .ssh/ в домашнем(!) каталоге пользователя, к которому вы будуте подключаться(!), скопирован публичный(!) ключ и переименован в authorized_keys. Точнее, в этот файл дописываются все публичные ключи.

#266374

Покажите, на всякий случай, полностью файл /etc/ssh/sshd_config.

#266815

Спасибо большое, обязательно гляну... как только доберусь до рабочего места ))) :D

Если что отпишусь :)

Войдите или зарегистрируйтесь, чтобы ответить.