![]() |
На локальной(не в сети) машине надо настроить ssh так, чтобы при логине не спрашивал пароль. Я перерыл маны и всякие доки, и
сделал рекомендуемые настройки в sshd_config. Потом сделал ключи в ssh-keygen, и скопировал ~/root/.ssh/identity.pub в ~/root/.ssh/authorized_keys. После этого идентификация в ssh должна быть не по паролю а по ключу. Но беда в том что этого не произошло!!! Вот сижу и не знаю что ещё предпринять. Думал что нет доступа к /root... но поставил на всё для всех rwxrwxrwx и без результата. Система - Mandrake 9.1 или Redhat 9. Листинг sshd_config: Protocol 2,1 HostKey /etc/ssh/ssh_host_key HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key PubkeyAuthentication yes X11Forwarding yes UsePrivilegeSeparation no PermitUserEnvironment yes IgnoreRhosts yes PrintMotd no StrictModes no RSAAuthentication yes PermitRootLogin yes PermitEmptyPasswords yes RhostsRSAAuthentication no RhostsAuthentication no IgnoreUserKnownHosts yes PasswordAuthentication yes AuthorizedKeysFile /root/.ssh/authorized_keys |
SystemZ
Сегодня шибко занят, но завтра отпишусь, как это делается. У меня всё прекрасно работает. Единственный хинт: посмотри, какой формат ключа в authorized_keys. Если он ASCII armored, то воспользуйся ssh-keygen -i -f ASCII_ARMORED_key_file > binary_key_file. Да и пермишн нужен соответствующий. Какой - не помню, завтра скину. |
Лучше скажи каким его надо генерить? По докам всё должно работать если сделать ключ ssh-keygen -t rsa1. Разъясни пожалуйста для старого ламера как настроить, у меня такое ощущение что sshd вообще игнорирует каталоги ~/.ssh и ключи в них!
|
Вобщем, вот каталог .ssh с пермишнами:
[pre]drwxr-xr-x 2 porky porky 512 Feb 24 22:17 . drwxr-xr-x 5 user group 512 Jun 3 23:17 .. -rw-r--r-- 1 user group 2243 Feb 3 10:56 authorized_keys -rw-r--r-- 1 user group 603 Feb 24 22:17 known_hosts[/pre] Во первых, у тебя должен быть запущен какой-нить агент (во Фре у меня это просто ssh-agent, в Винде - SSH Accession Lite), который хранит и парсит запчасти от приватного ключа, на стороне клиента (с которого подключаешься). На стороне сервера (к которому подключаешься), в файле authorized_keys (хотя ты могешь поменять его имя в файле конфига sshd) в каждой отдельной строчке должны храниться публичные ключи каждой клиентской машины, с которой ты подключаешься. Кстати, вот мой конфиг: [pre]# Port 22 Protocol 2,1 #ListenAddress 0.0.0.0 #ListenAddress :: ListenAddress <host_IP>:<host_port> # HostKey for protocol version 1 HostKey /etc/ssh/ssh_host_key # HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_dsa_key # Lifetime and size of ephemeral version 1 server key KeyRegenerationInterval 3600 ServerKeyBits 2048 # Logging #obsoletes QuietMode and FascistLogging SyslogFacility AUTH LogLevel DEBUG # Authentication: LoginGraceTime 120 PermitRootLogin no StrictModes yes # RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys # rhosts authentication should not be used RhostsAuthentication no # Don't read the user's ~/.rhosts and ~/.shosts files IgnoreRhosts yes # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts RhostsRSAAuthentication no # similar for protocol version 2 HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # RhostsRSAAuthentication and HostbasedAuthentication #IgnoreUserKnownHosts no # To disable tunneled clear text passwords, change to no here! PasswordAuthentication yes PermitEmptyPasswords no # Change to no to disable PAM authentication ChallengeResponseAuthentication no # Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #AFSTokenPassing no # Kerberos TGT Passing only works with the AFS kaserver #KerberosTgtPassing no #X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes #PrintMotd yes PrintLastLog yes KeepAlive yes #UseLogin no UsePrivilegeSeparation yes Compression yes #MaxStartups 10 # no default banner path #Banner /some/path #VerifyReverseMapping no # override default of no subsystems Subsystem sftp /usr/libexec/sftp-server[/pre] Добавлено: У меня идёт работа по ssh2 (DSA-ключи, генерятся по ssh-keygen -t dsa -b 2048 - число бит можно и меньше сделать). |
Ну и что? Я взял твой конфиг, сгенерил dsa ключ, скопировал /root/.ssh/id_dsa.pub в /root/.ssh/authorized_keys. ТО ЖЕ САМОЕ! Просит ввести пароль для root@localhost (в конфиге я разрешил логиниться рутом, мне это необходимо.). Пермишены я поставил как у тебя. Если в конфиге поменять PasswordAuthentication yes чтобы идентификация шла по ключам а не паролю, то при логине получаю: Permission denied (publickey).
После генерации ключей делал ssh-add, ssh-agent показал что экспортированы две переменные окружения. Что ему ещё надо!!?? |
SystemZ
Правильно. Один раз он спросит пароль, но потом спрашивать не будет. Этот пароль(passphrase) нужен для авторизации ключа. Цитата:
Лучше завести юзера, логиниться под ним, а потом "su -" делать. Причём запретить этому юзеру авторизоваться по паролю. Цитата:
Цитата:
|
Рассказываю ещё раз как я пытаюсь настроить:
(Конфиг твой, законнектиться надо на localhost, все дела под рутом - плохо, но так действительно надо!, при логине рута автоматически экспортируются SSH_AUTH_SOCK и SSH_AGENT_PID) 1) делаю ключи ssh-keygen -t dsa -b 2048 2) копирую ~/.ssh/id_dsa.pub в authorized_keys 3) запускаю ssh-add, просит passphrase для сгенеренного личного ключа - добавляю. 4) пробую ssh localhost - но тут он просит root@localhost''s passWORD, а не passPHRASE!!!! Так что ввод фразы тут не прокатит, а только пароль рута в системе! Добавлено: P.S.: Цитата:
|
SystemZ
Цитата:
|
Всё делаю на одной машине (localhost), все ключи в /root/.ssh/, соответственно, и логинюсь по ssh на эту же машину под рутом
|
SystemZ
Из под рута в рут грузишься? Хм, странно. Попробуй запустить демон sshd с логлевелом DEBUG2 или DEBUG3 и посмотреть влогах, на что жалобы идут. |
Barracuda - я тебя люблю! :) Как я об этом сам не подумал, пёр вслепую! Действительно, при ssh localhost в лог валится сообщение:
"Jun 14 22:57:17 localhost sshd[1725]: Connection from 127.0.0.1 port 32784 Jun 14 22:57:18 localhost sshd(pam_unix)[1725]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=localhost user=root Jun 14 22:57:20 localhost sshd[1725]: Failed none for root from 127.0.0.1 port 32784 ssh2 Jun 14 22:57:20 localhost sshd[1725]: Authentication refused: bad ownership or modes for directory /root/.ssh Jun 14 22:57:20 localhost sshd[1725]: Authentication refused: bad ownership or modes for directory /root/.ssh Jun 14 22:57:20 localhost sshd[1725]: Failed publickey for root from 127.0.0.1 port 32784 ssh2" Я действительно перебрал с правами к каталогу! Было бы ещё здорово если б ты подсказал как сделать "ssh-add" навеки, а то не пойму куда именно его забивать? (делал как в howto: eval `ssh-agent` ssh-add, но не помогает). |
Вот за это я НИКСы и люблю - практически всё можно запустить в отладке и посмотреть, на что пациент жалуется.
А на счёт ключа - попробуй добавить в логин скрипт нечто вроде: ssh-agent > ~/.agent-data . ~/.agent-data rm ~/.agent-data ssh-add |
ssh localhost -v в студию =)
|
Цитата:
|
Время: 07:47. |
Время: 07:47.
© OSzone.net 2001-