Як SSH в localhost без пароля?


17

РЕДАКТУВАННЯ: Вклавши саме те, що було зроблено.

Мені потрібно SSH, щоб localhostбез пароля звичайний спосіб зробити це (з відкритими ключами) не працює.

user@PC:~$ rm -rf .ssh/*
user@PC:~$ ssh-keygen -t rsa > /dev/null 
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
user@PC:~$ ls .ssh/
id_rsa  id_rsa.pub
user@PC:~$ ssh-copy-id -i localhost 
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is f7:87:b5:4e:31:a1:72:11:8e:5f:d2:61:bd:b3:40:1a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

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

user@PC:~$ ssh-agent $SHELL
user@PC:~$ ssh-add -L
The agent has no identities.
user@PC:~$ ssh-add 
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
user@PC:~$ ssh-add -L
ssh-rsa ...MY KEY HERE

user@PC:~$ ssh-copy-id -i localhost 
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

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

user@PC:~$ ssh localhost echo 'testing'
user@localhost's password: 

user@PC:~$ 

Отже, як ви бачите в останній команді, він все ще запитує пароль !!! Як я можу це виправити ?? Ubuntu-10.04, OpenSSH_5.3p1

EDIT2:

Додавання інформації про sshd

user@PC:~$ cat /etc/ssh/sshd_config | grep Authentication
# Authentication:
RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication no
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
ChallengeResponseAuthentication no
# PasswordAuthentication yes
#KerberosAuthentication no
#GSSAPIAuthentication no
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.

EDIT3: Результат розміщення реклами від $ ssh -vv localhost

$ssh -vv localhost
...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user/.ssh/identity
debug1: Offering public key: /home/user/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
user@localhost's password: 

EDIT4:

Просто перевірте, чи файли однакові, і md5sum погоджується


Чи є у вас RSAAuthentication yesі PubkeyAuthentication yesу вашій / і т.д. / SSH / sshd_config? Що показує ssh -vv localhost? Я просто спробував це на коробці 10.04 і не мав проблем ..
Doon

Hy Doon, справді .. У мене і так, і так. Я додав висновок ssh -vv у запитанні.
Канесін

Навіщо вам потрібен ssh до localhost, якщо у вас вже є доступ?
vtest

Програмне забезпечення для паралельної обробки використовує локальний ssh ​​/ rsh
Canesin

Будь ласка, не публікуйте відповідь у запитанні та не ставте "РІШЕНО" у назві. Ви зробили правильно, надавши відповідь. Після того, як ви прийняли відповідь, система покаже, що проблема вирішена.
ChrisF

Відповіді:


10

Перш за все, ви повинні зрозуміти, чим займаєтесь:

user@PC:~$ cat .ssh/id_rsa.pub | ssh localhost 'cat >> .ssh/authorized_keys'

Ви копіюєте відкритий ключ .ssh/id_rsa.pubчерез ssh, в той самий хост (саме такий є localhost, той самий хост). Якщо ви заміните localhostна якийсь інший хост, це має більше сенсу (але якщо ви намагаєтеся це заради того, щоб навчитися це робити, це нормально).

Коли у вас є копія відкритого ключа на віддаленому хості (або тому самому, в якому ви знаходитесь), ви повинні переконатися, що ви використовуєте його для автентифікації, у вашому фактичному хості, виклику ssh-agent/ ssh-add:

$ eval `ssh-agent`
$ ssh-add

Потім, якщо ви надали пароль, вам буде запропоновано ввести її після ssh-add. Якщо ви створили приватний ключ без парольної фрази, то це все.


Так, я розумію команди, я просто поставив так, щоб зрозуміти, що я робив звичайні речі з ключами. Я зробив ssh-add ... він не запитує парольну фразу (так як я нічого не використовував у створенні) .. але знову ж таки, роблячи, $ ssh localhost ls, він запитує пароль
Canesin

Тож якщо ви все-таки виконали ssh-add, відредагуйте своє запитання та поставте все, що ви зробили. Чим більше інформації ви дасте, тим краще і швидше відповідь.
Торіан

Вибачте за це, виправлено зараз .. Я додав термінал, зробив все знову, щоб вставити сюди ..
Canesin

Дякую мільйон разів! BTW, чому " eval"?
IProblemFactory

3

Виявили проблему.

Запуск сервера з налагодженням:

$sshd -Dd

Я виявив, що не в змозі прочитати auth_key

$chmod 750 $HOME

Виправлено це.


Якими були попередні файлові прапори?
bbaja42

2

Виконайте наступні дії

ssh-keygen -t rsa -C "your_email@example.com"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.

Використовуйте файл за замовчуванням та порожню парольну фразу (Просто натисніть клавішу Enter протягом наступних 2 кроків)

# start the ssh-agent in the background
eval "$(ssh-agent -s)"
# Agent pid 59566
ssh-add 

Скопіюйте вміст ~ / .ssh / id_rsa.pub в ~ / .ssh / санкціонований_кейс

Переконайтесь, що наведені нижче дозволи

 ls -l .ssh/
 total 20
-rw-r--r--. 1 swati swati  399 May  5 14:53 authorized_keys
-rw-r--r--. 1 swati swati  761 Jan 12 15:59 config
-rw-------. 1 swati swati 1671 Jan 12 15:44 id_rsa
-rw-r--r--. 1 swati swati  399 Jan 12 15:44 id_rsa.pub
-rw-r--r--. 1 swati swati  410 Jan 12 15:46 known_hosts 

Також переконайтеся, що дозволи для каталогу .ssh є. Це також важливо

drwx------.   2 swati swati    4096 May  5 14:56 .ssh

1
Забезпечте 750 дозволів на $ HOME
swatisinghi

На моїй машині (Fedora 28) встановлення дозволу authorized_keysна 0600 вирішує проблему, тоді як дозвіл .sshкаталогу не впливає на sshing localhost
Chang Qian

1

Спростіть конфігурацію сервера

Я думаю, вам може знадобитися відключити автентифікацію на основі пароля. Це sshd_config, який я використовую

Port 22
Protocol 2
PermitRootLogin no
StrictModes yes
PasswordAuthentication no
ChallengeResponseAuthentication no
MaxStartups 2
AllowUsers peter paul mary
LogLevel VERBOSE

Спробуйте спочатку щось мінімальне, а потім додайте до нього, як вам потрібні додаткові можливості.


Оновлення:

Перевірте журнали серверів

З вашого EDIT3 я бачу, що аутентифікація відкритого ключа не працює перед тим, як клієнт спробує автентифікацію на основі пароля. syslog вашого сервера може містити деякі повідомлення з sshd, які проливають на це світло.

Перезавантажте змінені конфігурації

Не забудьте подати сигнал sshdдля перезавантаження будь-яких змін конфігурації. Напрkill -HUP $(cat /etc/sshd.pid)


Я думаю, що відключення автентифікації пароля, коли він навіть не може ввійти без пароля, було б останньою справою, яку він хоче зробити (повністю вимкнути себе)
Amalgovinus

@Amalgovinus: Запитання було широко відредаговане з моменту публікації моєї початкової відповіді. Я думаю, я міг би видалити цю відповідь.
RedGrittyBrick

0

Щодо вищезгаданого допису, стикаючись з тією ж проблемою, я просто змінив лінію

Аутентифікація пароля немає

у файлі / etc / ssh / sshd_config, і він працював.

Більше того, можливо, це краще використовувати

перезапуск служби sshd

для перезавантаження змін конфігурації sshd.


0

Ще одне рішення для Red Hat Enterprise Linux 6.5 SELinux, що запобігає sshd читати $ HOME / .ssh, - це використовувати Restocon, дивіться мою аншсер тут /superuser//a/764020/213743 .



0

У мене була така ж проблема, я зробив наступні 3 кроки, щоб створити пароль, менший логін, і він працює чудово

1. ssh-keygen -t rsa
Press enter for each line
2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. chmod og-wx ~/.ssh/authorized_keys
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.