16

РЕДАКТИРОВАТЬ: положить именно то, что было сделано.

Мне нужно 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 согласен

8 ответов8

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 . Если вы сгенерировали закрытый ключ без ключевой фразы, то это все.

3

Обнаружили проблему.

Запуск сервера с отладкой:

$sshd -Dd

Я обнаружил, что не смог прочитать auth_key

$chmod 750 $HOME

Починил это.

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.

Используйте файл по умолчанию и пустую фразу-пароль (просто нажмите ввод в следующих 2 шагах)

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

Скопируйте содержимое ~/.ssh/id_rsa.pub в ~/.ssh/authorized_keys

Убедитесь, что следующие разрешения

 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

Упростите настройку сервера

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

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

Сначала попробуйте что-нибудь минимальное, а затем добавьте к нему, если вам нужны дополнительные возможности.


Обновить:

Проверьте логи сервера

Из вашего EDIT3 я вижу, что аутентификация с открытым ключом не проходит до того, как клиент попытается выполнить аутентификацию на основе пароля. Системный журнал вашего сервера может содержать некоторые сообщения от sshd, которые проливают некоторый свет на это.

Перезагрузить измененные конфиги

Не забудьте подать сигнал sshd чтобы перезагрузить любые изменения конфигурации. Например, kill -HUP $(cat /etc/sshd.pid)

0

Для меня это было так просто, как

cat id_rsa.pub >> authorized_keys
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
0

Другое решение для Red Hat Enterprise Linux 6.5 SELinux, не позволяющее sshd читать $ HOME/.ssh, - это использовать restorecon, см. Мой ответ здесь https://superuser.com/a/764020/213743.

0

Относительно вышеупомянутого поста, столкнувшись с той же проблемой, я просто изменил строку

ПарольАутентификация нет

в файле /etc /ssh /sshd_config, и это сработало.

Более того, возможно, лучше использовать

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

перезагрузить изменения конфигурации sshd.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .