Автор Гілка: ssh без пароля  (Прочитано 4600 раз)

Відсутній noddeat

  • Кореспондент
  • ***
  • дописів: 197
  • Карма: +0/-0
ssh без пароля
« : 2007-05-21 13:49:10 »
Завдання: заходити з мого лептопа на віддалений сервер ia-krevetko-i-umene-dovha-nazva-bo-rozumnyi-server.com.ua без пароля.
Спосіб вирішення описаний тут: http://www.cs.umd.edu/~arun/misc/ssh.html
В двох словах:
створюєте в домашньому каталозі файл krevetko з вмістом:
ssh -X noddeat@ia-krevetko-i-umene-dovha-nazva-bo-rozumnyi-server.com.ua
робимо його виконувальним:
%chmod 700 krevetko

створюємо собі ключ:
%ssh-keygen -t rsa
Запитає ввести гасло (пароль) - не вводіть нічого (empty passphrase), якщо ви не параноїк. Або читайте англомовний документ, щоб дізнатися, як потім вводити цей пароль при завантаженні системи.

Дефолтово ключ буде створено в ~/.ssh/id_rsa.pub

копіюєте цей ключ до файлу ~/.ssh/authorized_keys2 у вашому каталозі на віддаленому сервері. Якщо ви хочете заходити на цей сервер без пароля з кількох компів, то на кожному компі треба зґенерувати ключ і вміст файла id_rsa.pub додати до файлу
authorized_keys2.

зец іт. Тепер при наборі
~%./krevetko
ви потрапите на віддалений сервер без пароля і логіна. Так само зможете виконувати scp без пароля, що дозволить працювати скриптам, запущеним від вашого імені, автономно.

PS Не забудьте
chmod 600 id_rsa.pub i authorized_keys2
PPS критика вітається

PPPS Означений спосіб у мене не працює, якщо віддалений сервер крутиться на SunOS. 100% працює на Linux-Linux. Інші ОС не перевіряв. Повинно запрацювати й у вінді через PuTTY, тіки ключ напевно в лінуксі треба зґенерувати. Ввечері перевірю.

« Змінено: 2007-05-21 17:48:44 від noddeat »
Filenames are infinite in length, where infinity is set to to 255 characters. Peter Collinson, "The Unix File System"

Відсутній anatolijd

  • Графоман
  • ****
  • дописів: 325
  • Карма: +0/-0
Re: ssh без пароля
« Відповідей #1 : 2007-05-22 09:38:23 »
Тре додати шо в /etc/ssh/sshd_config оця "хрєнь" має бути закоментована як мінімум (або вказаний інший перелік файлів), інакше public key authentication не відбудеться:

#AuthorizedKeysFile     .ssh/authorized_keys

Директива, яка визначає приорітети доступних методів автентифікації:
PreferredAuthentications public-key, password, pam

public key authentication - це фіча протоколу а не ОС. Воно однаково добре працює на Linux і на FreeBSD  і на Солярці в любих комбінаціях. Якщо не працює - значить тре колупати /etc/ssh/sshd_config на предмет директив які негативно впливають.

Команда
$ ssh-keygen -t rsa

генерує насправді два ключі (буде використано протокол 2 RSA, це в даному випадку суттєво бо інші протоколи генерують трохи інші назви файлів):

приватний ключ (нікому його не показуйте!)
 ~/.ssh/id_rsa

і паблік ключ (можете роздавати всім бажаючим без краплі страху)
 ~/.ssh/id_rsa.pub

саме оцей паблік і розкладається по серверах, приватний ключ має залишатись незмінним.
На діру ~/.ssh  також повинно бути  chmod 700


Шо ще - періодично такий акцесс може обламуватись бо key fingerprint 03:cb:30:fe:11:b9:f3:33:9a:f6:16:b3:23:5d:46:2c is changed.

Тоді треба чистити файл (просто видалити стрічку для конкретного сервера) ~/.ssh/known_hosts, і конектитись ще раз.

З Путті працює стопудово.

Відсутній noddeat

  • Кореспондент
  • ***
  • дописів: 197
  • Карма: +0/-0
Re: ssh без пароля
« Відповідей #2 : 2007-05-22 17:23:25 »
дякую за гарне доповнення. на тому компі з соляркою в мене прав рута нема, так що не допоможе.
а з путті щось не зрозумів,як то налаштувати, але враховуючи "безпеку" вінди й зокрема ntfs, я не впевнений, чи варто це там налаштовувати.
Filenames are infinite in length, where infinity is set to to 255 characters. Peter Collinson, "The Unix File System"

Відсутній sprint2000

  • Новачок
  • *
  • дописів: 8
  • Карма: +0/-0
Re: ssh без пароля
« Відповідей #3 : 2008-10-08 13:17:27 »
Зкопіювати свій публічний ключ на віддалений сервер можна такою командою:
scp ./id_dsa.pub user@host:~/.ssh/
де:
 scp - secure copy
 id_dsa.pub - раніше згенерований Вами ПУБЛІЧНИЙ ключ
 user - ім'я користувача на віддаленій машині (поки що треба знати його пароль :-))
 @ - розділювач користувача/віддаленого хоста
 host - віддалений хост (або його айпішка)

Після цього логінитесь на віддаленому хості.

Авторизувати свій публічний ключ можна командою:
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
Вона додасть вміст id_dsa.pub в кінець authorized_keys

Є "просунута команда" щоб з Вашого хоста додати Ваш публічний ключ на віддалений хост відразу в authorized_keys:
ssh-copy-id user@host

Додам що інколи не завадить рестартнути sshd
/etc/init.d/sshd restart

Ще одне:
Якщо Ви дуже багато вже зробили і міняли права на файли, то ссш не "дозволить" працювати. права МУСЯТЬ бути такими:
-rw-------  1 user user_group  672 Sep 15 13:54 id_dsa
-rw-r--r--  1 user user_group  603 Sep 15 13:54 id_dsa.pub
-rw-r--r--  1 user user_group 1183 Sep 15 16:32 known_hosts
-rw-------  1 user user_group  602 Sep 15 12:27 authorized_keys

Ще одне:-)
наприклад Вам треба надати юзеру username доступ до SVN по SSH без пароля. Тоді створіть на сервері з свн юзера svn (якщо нема такого). Згенеріть для нього теж ключі командою наприклад ssh-keygen -t dsa. І додайте йому таку стрічку у файл authorized_keys:

command="svnserve -t --tunnel-user=username" ssh-dss AAAAB3NzaClkc........
де: AAAAB3NzaClkc........ - це власне публічний ключ юзера username
Тобто додайте як я описав вище. А потім допишіть на початку рядка отой "тунель";-)

То лише натякаю на те що має бути звичайно "нормальна команда", яка це робить (при потребі запитайте у Ґуґла) Але це працює. Тобто юзер username може без пароля конектитись до віддаленого свн-а, наприклад відразу з Екліпса, по URL типу цього:
svn+ssh://svn@host/var/svn/repos
Про Екліпс звичайно окрема розмова, але теж є у Ґуґла відповідь...
У цьому випадку юзер для роботи з свн один (svn). А під ним конектитись може багато людей з допомогою своїх публічних ключів...

Щасти!
« Змінено: 2008-10-08 13:19:40 від sprint2000 »

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: ssh без пароля
« Відповідей #4 : 2008-10-08 16:31:51 »
В продовження теми:
$ cat ~/ bin/pub-key-install.sh
#!/ bin/sh

# Installation of SSH public key to remote server

# If number of arguments is less than one or first argument is "--help" or "-h"
if [ $# -lt 1 -o "x$1" == "x--help" -o "x$1" == "x-h" ]
then
  # Show short usage information
  echo "Usage: ... $0 [user@]host [[user@]host]..."
  echo
  echo "Command will install public SSH key to all specified accounts."
  exit 1
fi


if [ ! -s ~/.ssh/id_dsa.pub ]
then
  echo "Generating private and public key pair for current account"
  ssh-keygen -t dsa
fi

for I in "$@"
do
  cat ~/ .ssh/id_dsa.pub | ( ssh "$I" 'mkdir -p ~/.ssh; cat >>~/.ssh/authorized_keys; chmod -R u=rwX,go= ~/.ssh; echo Installed' )
done
[Fedora Linux]

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: ssh без пароля
« Відповідей #5 : 2008-10-08 16:32:44 »
В пару місць вставив пробіли в шлях до файлу, щоб обманути робота, так що обережно копіюйте. :-)
[Fedora Linux]