Как SSH на localhost без пароля?

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

Мне нужно 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: результат Ading из $ 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

  • Удалить ключ из known_hosts
  • Ssh зависает при попытке подключения к некоторым хостам
  • Как сделать туннель ssh открытым для публики?
  • Как ssh к недоступной удаленной машине путем туннелирования через сервер, к которому все могут добраться?
  • Необходима дополнительная конфигурация для перенаправления ssh-agent?
  • Удаленная рабочая станция Linux за брандмауэром
  • Имеет ли смысл иметь несколько ключей SSH?
  • Как SSH внешний сервер с компьютера, который находится за брандмауэром прокси?
  • 7 Solutions collect form web for “Как SSH на localhost без пароля?”

    Прежде всего, вы должны понимать, что вы делаете:

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

    Вы копируете открытый ключ .ssh/id_rsa.pub через ssh, на тот же хост (это то, что является .ssh/id_rsa.pub хостом, тот же хост). Если вы замените localhost каким-либо другим хостом, это будет иметь больше смысла (но если вы пытаетесь это ради изучения того, как это сделать, все в порядке).

    После того, как у вас есть копия открытого ключа на удаленном хосте (или том же, в котором вы находитесь), вы должны убедиться, что используете его для аутентификации в своем реальном хосте, вызывая ssh-agent / ssh-add :

     $ eval `ssh-agent` $ ssh-add 

    Затем, если вы предоставили кодовую фразу, вам будет предложено ввести ее после ssh-add . Если вы создали закрытый ключ без кодовой фразы, то это все.

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

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

     $sshd -Dd 

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

     $chmod 750 $HOME 

    Починил это.

    Выполните следующие действия

     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 / 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 

    Упростите конфигурацию сервера

    Я думаю, вам может потребоваться отключить аутентификацию на основе пароля. Это 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 сигнал sshd для перезагрузки любых изменений конфигурации. Например, kill -HUP $(cat /etc/sshd.pid)

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

    PasswordAuthentication no

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

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

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

    Для перезагрузки изменений конфигурации sshd.

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

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

     cat id_rsa.pub >> authorized_keys 
    Давайте будем гением компьютера.