Добавление открытого ключа в~/.ssh / авторизованные ключи не входят в систему автоматически
Я добавил открытый ключ ssh в файл authorized_keys. ssh localhost
должен войти в систему, не спрашивая пароль.
Я сделал это и попытался набрать ssh localhost
, но он все еще просит меня ввести пароль. Есть ли другие настройки, которые я должен пройти, чтобы заставить его работать?
я следовал инструкции по изменению разрешений:
ниже результат, если я сделаю ssh -v localhost
debug1: Reading configuration data /home/john/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/john/.ssh/identity type 1
debug1: identity file /home/john/.ssh/id_rsa type -1
debug1: identity file /home/john/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7p1 Debian-8ubuntu3
debug1: match: OpenSSH_4.7p1 Debian-8ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /home/john/.ssh/known_hosts:12
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: /home/john/.ssh/identity
debug1: Server accepts key: pkalg ssh-rsa blen 149
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
затем он запрашивает passphase после вышеизложенного бревно. Почему он не регистрирует меня без пароля?
26 ответов
вам нужно проверить разрешения authorized_keys
файл и папка / родительские папки, в которых он находится.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
для получения дополнительной информации см. на этой странице.
вам также может потребоваться изменить / проверить разрешения вашего домашнего каталога для удаления доступа на запись для группы и других.
chmod go-w ~
SELinux также может заставить authorized_keys не работать. Особенно для root в CentOS 6 и 7. Не нужно отключать. После того, как вы проверили свои разрешения правильно, вы можете исправить это так:
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
restorecon -R -v /root/.ssh
задание по SSH authorized_keys кажется простым, но скрывает некоторые ловушки, которые я пытаюсь понять
-- сервер --
на /и т. д./по ssh/sshd_config в set passwordAuthentication yes
чтобы позволить серверу временно принять аутентификацию пароля
-- клиент --
считают cygwin как эмуляция linux и установка и запуск openssh
1. создание частных и открытые ключи (клиентская сторона)
# ssh-keygen
здесь нажав просто введите вы получите по умолчанию 2 файлы "id_rsa" и "id_rsa.паб" в ~/.ssh/ но если вы дадите name_for_the_key сгенерированные файлы сохраняются в вашем pwd
2. место your_key.паб на целевой машине ssh-copy-id user_name@host_name
если вы не создали ключ по умолчанию это первый шаг, чтобы пойти не так ... вы должны использовать
ssh-copy-id -i path/to/key_name.pub user_name@host_name
3. лесозаготовки ssh user_name@host_name
будет работать только для id_rsa по умолчанию, так что вот 2-я ловушка для вас нужно ssh -i path/to/key_name user@host
(использовать ssh-v ... возможность увидеть, что происходит)
если сервер по-прежнему запрашивает пароль затем вы дали smth. к введите пароль: когда вы создали ключи ( так это нормально)
если ssh не прослушивает порт по умолчанию 22 должен использовать ssh -p port_nr
-- сервера -----
4. изменить /и т. д./по ssh/sshd_config в иметь
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
(uncoment если случай)
это говорит ssh принять authorized_keys и искать в домашнем каталоге пользователя для key_name sting, написанного В.ssh / authorized_keys file
5 установить разрешения в target машина!--14-->
chmod 755 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
также выключите pass auth
passwordAuthentication no
чтобы закрыть ворота для всех SSH root / admin/....@ваш_домен попытки
6 убедитесь, что владение и групповое владение всеми некорневыми домашними каталогами являются подходящими.
chown -R ~ usernamehere
chgrp -R ~/.ssh/ user
===============================================
7. рассмотрим excelent http://www.fail2ban.org
8. дополнительные ssh туннель для доступа к MySQL (bind = 127.0.0.1) разорвать
также убедитесь, что ваш домашний каталог не доступен для записи другим
chmod g-w,o-w /home/USERNAME
ответ украден из здесь
перечисление открытого ключа .ssh / authorized_keys необходим, но недостаточно для sshd (сервера), чтобы принять его. Если ваш закрытый ключ защищен парольной фразой, Вам нужно будет каждый раз давать SSH (client) парольную фразу. Или вы можете использовать ssh-agent или эквивалент gnome.
трассировка обновления соответствует закрытому ключу, защищенному парольной фразой. См. ssh-agent или ssh-keygen-p.
остерегайтесь, что SELinux также может вызвать эту ошибку, даже если все разрешения кажутся ок. Отключение его сделало трюк для меня (вставьте обычные оговорки об отключении его).
отчаянные также могут убедиться, что у них нет дополнительных новых строк в файле authorized_keys из-за копирования id_rsa.паб текст из запутанного терминала.
пользователь-ваше имя пользователя
mkdir -p /home/user/.ssh
ssh-keygen -t rsa
touch /home/user/.ssh/authorized_keys
touch /home/user/.ssh/known_hosts
chown -R user:user /home/user/.ssh
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/id*
chmod 644 /home/user/.ssh/id*.pub
chmod 644 /home/user/.ssh/authorized_keys
chmod 644 /home/user/.ssh/known_hosts
то, что сделало трюк для меня, наконец, было убедиться, что владелец/группа не были root, но пользователь:
chown -R ~/.ssh/ user
chgrp -R ~/.ssh/ user
команду пишем:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
после того, как вы это сделаете, убедитесь, что ваш dir таков:
drwx------ 2 lab lab 4.0K Mar 13 08:33 .
drwx------ 8 lab lab 4.0K Mar 13 08:07 ..
-rw------- 1 lab lab 436 Mar 13 08:33 authorized_keys
-rw------- 1 lab lab 1.7K Mar 13 07:35 id_rsa
-rw-r--r-- 1 lab lab 413 Mar 13 07:35 id_rsa.pub
еще один совет, чтобы помнить. Начиная с v7.0 OpenSSH запрещает DSS/DSA ssh ключи по умолчанию из-за их наследования слабости. Поэтому, если у вас есть OpenSSH v7.0+, убедитесь, что ваш ключ не ssh-dss
.
если вы застряли с ключами DSA, вы можете повторно включить поддержку локально обновление
sshd_config
и~/.ssh/config
файлы с такими строками:PubkeyAcceptedKeyTypes=+ssh-dss
убедитесь, что у целевого пользователя установлен пароль. Запустить passwd username
установить один. Это было необходимо для меня, даже если пароль SSH login был отключен.
еще один вопрос, который вы должны позаботиться. Если созданный файл не используется по умолчанию
id_rsa
и id_rsa.pub
вы должны создать .ssh / config file и определите вручную, какой id-файл вы собираетесь использовать с подключением.
пример здесь:
host remote_host_name
hostname 172.xx.xx.xx
user my_user
IdentityFile /home/my_user/.ssh/my_user_custom.pub
в моем случае мне нужно было поставить мой на .openssh
.
это местоположение указано в /etc/ssh/sshd_config
согласно варианту AuthorizedKeysFile %h/.ssh/authorized_keys
.
я издал sudo chmod 700 ~/.ssh
и chmod 600 ~/.ssh/authorized_keys
и chmod go-w $HOME $HOME/.ssh
сверху, и это исправило мою проблему на коробке CentOS7, на которой я испортил разрешения, пытаясь заставить работать акции samba. Спасибо
это похоже на проблему с разрешением. Обычно это происходит, если разрешение некоторого файла / каталога настроено неправильно. В большинстве случаев они ~/.ssh
и ~/.ssh/*
. В моем случае они /home/xxx
.
вы можете изменить уровень журнала sshd, изменив /etc/ssh/sshd_config
(поиск LogLevel
, установить DEBUG
), затем проверьте выход в /var/log/auth.log
чтобы увидеть, что произошло.
убедитесь, что вы скопировали весь публичный ключ authorized_keys
; the ssh rsa
префикс необходим для работы ключа.
необходимо проверить свойства файлов. для назначения необходимого свойства используйте:
$ chmod 600 ~/.ssh/sshKey
$ chmod 644 ~/.ssh/sshKey.pub
на этой ноте убедитесь, что у конфигурации sshd есть -;
PermitRootLogin without-password
установите как указано выше, затем перезапустите sshd (/etc/init.перезапуск d/sshd)
выйдите из системы и попробуйте снова войти в систему!
по умолчанию я считаю -;
PermitRootLogin no
в моем случае это потому, что группа пользователя не установлена в AllowGroups файла конфигурации /etc/ssh/sshd_config. После добавления все работает нормально.
моей проблемой был модифицированный файл AuthorizedKeysFile, когда автоматизация для заполнения /etc/ssh / authorized_keys еще не была запущена.
$sudo grep AuthorizedKeysFile /etc/ssh/sshd_config
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile /etc/ssh/authorized_keys/%u
у меня есть домашний каталог в нестандартном месте и в sshd
журналы у меня есть эта строка:
Could not open authorized keys '/data/home/user1/.ssh/authorized_keys': Permission denied
даже если все разрешения были в порядке (см. другие ответы).
Я нашел решение здесь: http://arstechnica.com/civis/viewtopic.php?p=25813191&sid=0876f069ec2aa5fdcd691a2e2e7242c2#p25813191
в моем конкретном случае:
-
добавлена новая строка в
/etc/selinux/targeted/contexts/files/file_contexts.homedirs
:-
это исходная строка для обычных домашних каталогов:
/home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0
-
это моя новая строка:
/data/home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0
-
затем
restorecon -r /data/
иsshd
перезагрузка
просто посмотри на /var / log / auth.log на сервер. Установка дополнительной многословности с помощью - vv на стороне клиента не поможет, потому что сервер вряд ли предложит слишком много информации для возможного злоумышленника.
у меня была эта проблема, и ни один из других ответов не решил ее, хотя, конечно, другие ответы are правильно.
в моем случае, оказалось, что /root
сам каталог (не например /root/.ssh
) имели неправильные разрешения. Мне нужно было:
chown root.root /root
chmod 700 /root
конечно, эти разрешения должны быть чем-то вроде этого (возможно chmod 770
) независимо от. Однако это специально помешало sshd
работать, хотя /root/.ssh
и /root/.ssh/authorized_keys
как правильно разрешения и владельцы.