Показать полную графическую версию : SSH без запроса пароля
На локальной(не в сети) машине надо настроить 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
SystemZ
Сегодня шибко занят, но завтра отпишусь, как это делается. У меня всё прекрасно работает. Единственный хинт: посмотри, какой формат ключа в authorized_keys. Если он ASCII armored, то воспользуйся ssh-keygen -i -f ASCII_ARMORED_key_file > binary_key_file. Да и пермишн нужен соответствующий. Какой - не помню, завтра скину.
Лучше скажи каким его надо генерить? По докам всё должно работать если сделать ключ ssh-keygen -t rsa1. Разъясни пожалуйста для старого ламера как настроить, у меня такое ощущение что sshd вообще игнорирует каталоги ~/.ssh и ключи в них!
Barracuda
12-06-2003, 15:09
Вобщем, вот каталог .ssh с пермишнами:
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
Во первых, у тебя должен быть запущен какой-нить агент (во Фре у меня это просто ssh-agent, в Винде - SSH Accession Lite), который хранит и парсит запчасти от приватного ключа, на стороне клиента (с которого подключаешься). На стороне сервера (к которому подключаешься), в файле authorized_keys (хотя ты могешь поменять его имя в файле конфига sshd) в каждой отдельной строчке должны храниться публичные ключи каждой клиентской машины, с которой ты подключаешься. Кстати, вот мой конфиг:
# 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
Добавлено:
У меня идёт работа по 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 показал что экспортированы две переменные окружения. Что ему ещё надо!!??
Barracuda
12-06-2003, 19:55
SystemZ
Правильно. Один раз он спросит пароль, но потом спрашивать не будет. Этот пароль(passphrase) нужен для авторизации ключа.
я разрешил логиниться рутом
Ну, батенька, эт вы здря.
Лучше завести юзера, логиниться под ним, а потом "su -" делать. Причём запретить этому юзеру авторизоваться по паролю.
Если в конфиге поменять PasswordAuthentication yes чтобы идентификация шла по ключам а не паролю, то при логине получаю: Permission denied (publickey).
Наоборот, если "no", то по паролю авторизации нет.
-agent показал что экспортированы две переменные окружения
Ничего он не экспортирует, на самом деле (посмотри по env или set - не помню). Его надо встраивать в .login конкретного юзера, из под которого идёт поключение к серверу(где ssh-agent запускается). Почитай мань по ssh-agent - там пара тонких моментов есть. Это он даёт строчки для импорта, т.е. ты их сам должен прикрутить.
Рассказываю ещё раз как я пытаюсь настроить:
(Конфиг твой, законнектиться надо на 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
SystemZ
2) копирую ~/.ssh/id_dsa.pub в authorized_keys
Где генерим ключ и в какой каталог (и на какую машину) прописываем пуличный ключ?
Всё делаю на одной машине (localhost), все ключи в /root/.ssh/, соответственно, и логинюсь по ssh на эту же машину под рутом
Barracuda
13-06-2003, 16:54
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, но не помогает).
Barracuda
15-06-2003, 13:55
Вот за это я НИКСы и люблю - практически всё можно запустить в отладке и посмотреть, на что пациент жалуется.
А на счёт ключа - попробуй добавить в логин скрипт нечто вроде:
ssh-agent > ~/.agent-data
. ~/.agent-data
rm ~/.agent-data
ssh-add
ssh localhost -v в студию =)
ssh-agent > ~/.agent-data
. ~/.agent-data
rm ~/.agent-data
ssh-add
я что-то не пойму смысл сих пассов! Скажи лучше словами. Я так понимаю, что нужна команда, которая при входе в систему выполняет ssh-add и сразу вводит ему passphrase для моего ключа и потом автоматом говорит yes. Как это лучше изобразить на shell-script?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.