Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   SSH без запроса пароля (http://forum.oszone.net/showthread.php?t=13367)

Ge0rge 11-06-2003 20:45 71582

На локальной(не в сети) машине надо настроить 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

Barracuda 12-06-2003 00:49 71583

SystemZ
Сегодня шибко занят, но завтра отпишусь, как это делается. У меня всё прекрасно работает. Единственный хинт: посмотри, какой формат ключа в authorized_keys. Если он ASCII armored, то воспользуйся ssh-keygen -i -f ASCII_ARMORED_key_file > binary_key_file. Да и пермишн нужен соответствующий. Какой - не помню, завтра скину.

Ge0rge 12-06-2003 10:15 71584

Лучше скажи каким его надо генерить? По докам всё должно работать если сделать ключ ssh-keygen -t rsa1.  Разъясни пожалуйста для старого ламера как настроить, у меня такое ощущение что sshd вообще игнорирует каталоги ~/.ssh и ключи в них!

Barracuda 12-06-2003 15:09 71585

Вобщем, вот каталог .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 - число бит можно и меньше сделать).

Ge0rge 12-06-2003 17:09 71586

Ну и что? Я взял твой конфиг, сгенерил dsa ключ, скопировал /root/.ssh/id_dsa.pub в /root/.ssh/authorized_keys. ТО ЖЕ САМОЕ! Просит ввести пароль для root@localhost (в конфиге я разрешил логиниться рутом, мне это необходимо.). Пермишены я поставил как у тебя. Если в конфиге поменять PasswordAuthentication yes чтобы идентификация шла по ключам а не паролю, то при логине получаю: Permission denied (publickey).
После генерации ключей делал ssh-add, ssh-agent показал что экспортированы две переменные окружения. Что ему ещё надо!!??

Barracuda 12-06-2003 19:55 71587

SystemZ
Правильно. Один раз он спросит пароль, но потом спрашивать не будет. Этот пароль(passphrase) нужен для авторизации ключа.
Цитата:

я разрешил логиниться рутом
Ну, батенька, эт вы здря.
Лучше завести юзера, логиниться под ним, а потом "su -" делать. Причём запретить этому юзеру авторизоваться по паролю.
Цитата:

Если в конфиге поменять PasswordAuthentication yes чтобы идентификация шла по ключам а не паролю, то при логине получаю: Permission denied (publickey).
Наоборот, если "no", то по паролю авторизации нет.
Цитата:

-agent показал что экспортированы две переменные окружения
Ничего он не экспортирует, на самом деле (посмотри по env или set - не помню). Его надо встраивать в .login конкретного юзера, из под которого идёт поключение к серверу(где ssh-agent запускается). Почитай мань по ssh-agent - там пара тонких моментов есть. Это он даёт строчки для импорта, т.е. ты их сам должен прикрутить.

Ge0rge 12-06-2003 21:18 71588

Рассказываю ещё раз как я пытаюсь настроить:
(Конфиг твой, законнектиться надо на 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.:

Цитата:

Если в конфиге поменять PasswordAuthentication yes чтобы идентификация шла по ключам а не паролю, то при логине получаю: Permission denied (publickey).
я и имел в виду что если "no", то по паролю авторизации нет, т.е. PasswordAuthentication yes  сменить на PasswordAuthentication no

Barracuda 12-06-2003 21:38 71589

SystemZ
Цитата:

2) копирую ~/.ssh/id_dsa.pub в authorized_keys
Где генерим ключ и в какой каталог (и на какую машину) прописываем пуличный ключ?

Ge0rge 13-06-2003 12:12 71590

Всё делаю на одной машине (localhost), все ключи в /root/.ssh/, соответственно, и логинюсь по ssh на эту же машину под рутом

Barracuda 13-06-2003 16:54 71591

SystemZ
Из под рута в рут грузишься? Хм, странно. Попробуй запустить демон sshd с логлевелом DEBUG2 или DEBUG3 и посмотреть  влогах, на что жалобы идут.

Ge0rge 14-06-2003 22:49 71592

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, но не помогает).



Barracuda 15-06-2003 13:55 71593

Вот за это я НИКСы и люблю - практически всё можно запустить в отладке и посмотреть, на что пациент жалуется.
А на счёт ключа - попробуй добавить в логин скрипт нечто вроде:
ssh-agent > ~/.agent-data
. ~/.agent-data
rm ~/.agent-data
ssh-add

biodos 16-06-2003 10:40 71594

ssh localhost -v в студию =)

Ge0rge 16-06-2003 18:45 71595

Цитата:

ssh-agent > ~/.agent-data
. ~/.agent-data
rm ~/.agent-data
ssh-add
я что-то не пойму смысл сих пассов! Скажи лучше словами. Я так понимаю, что нужна команда, которая при входе в систему выполняет ssh-add и сразу вводит ему passphrase для моего ключа и потом автоматом говорит yes. Как это лучше изобразить на shell-script?


Время: 07:47.

Время: 07:47.
© OSzone.net 2001-