У меня есть две машины Redhat 7.3. Я хочу SSH-доступ без пароля к машине2 с машины1. Вот что я сделал. На машине 1 я использовал sudo (sudo su -) в качестве пользователя root и сгенерировал открытый и закрытый ключи rsa с помощью команды ssh-keygen со всеми настройками по умолчанию. Они присутствуют в /root/.ssh/ с именами id_rsa, id_rsa.pub . Разрешения для .ssh:

drwx------  2 root root   54 Jan 17 05:08 .
drwxr-x---. 7 root root 4.0K Jan 17 04:08 ..
-rw-------  1 root root 1.7K Jan 17 06:18 id_rsa
-rw-r--r--  1 root root  414 Jan 17 06:18 id_rsa.pub
-rw-r--r--  1 root root 4.0K Jan 17 07:37 known_hosts

Я скопировал содержимое id_rsa.pub к machine2 в файл authorized_keys в /root/.ssh созданного мною как корень. разрешения для каталога .ssh на machine2 следующие

drwxr-xr-x  2 root root   28 Jan 17 06:32 .
dr-xr-x---. 6 root root 4.0K Jan 17 03:28 ..
-rw-r--r--  1 root root  414 Jan 17 06:32 authorized_keys

Теперь я попытался выполнить ssh (с подробным описанием) с machine1 на machine2, используя следующую команду. Но он по-прежнему запрашивает пароль для подключения. Я ожидаю, что соединение должно быть установлено без запроса пароля.

Я попытался изменить разрешения .ssh и authorized_keys на 700 и 600 на machine2, как предлагает SSH, запрашивает пароль, даже с открытым ключом, но проблема сохраняется.

Я дал выходные данные отладки команды ssh. Он работает, как и ожидалось, пока сервер не примет открытый ключ. После этого я замечаю, что причиной этой проблемы может быть debug1: key_parse_private2: отсутствующий маркер начала. Кто-нибудь может предложить мне выход из этой проблемы?

[root@machine1 ~]# ssh -v machine2
OpenSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 56: Applying options for *
debug1: Connecting to machine2 [x.x.x.x] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/id_rsa type 1
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: identity file /root/.ssh/id_dsa type -1
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: identity file /root/.ssh/id_ecdsa type -1
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: identity file /root/.ssh/id_ed25519 type -1
debug1: identity file /root/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com none
debug1: kex: curve25519-sha256@libssh.org need=16 dh_need=16
debug1: kex: curve25519-sha256@libssh.org need=16 dh_need=16
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA X:X:X:X:....
debug1: Host 'machine2' is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:1
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
========================================================
| The system is to be used only by authorized users.   |
|                                                      |
| By continuing to use the system, the user represents |
|         that he/she is an authorized user.           |
|                                                      |
| Use of the system constitutes consent to monitoring  |
|                   and review.                        |
|                                                      |
|  I have received, read and understand the Company's  |
|   Acceptable Use Policy and agree to abide by the    |
|       policy and its terms and conditions.           |
|                                                      |
========================================================
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /root/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Trying private key: /root/.ssh/id_ecdsa
debug1: Trying private key: /root/.ssh/id_ed25519
debug1: Next authentication method: password
root@machine2's password: 

1 ответ1

1

"Отсутствие маркера начала" на самом деле не проблема, вы получаете это сообщение при успешном входе с открытым паролем без пароля.

У вас есть баннер, так что вы, вероятно, сделали некоторые закалки. Убедитесь, что следующие параметры доступны для вашего пользователя. Вы можете добавить их в конец вашего файла sshd_config после строки "Match User":

Match User root,user1
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin yes
PermitEmptyPasswords yes

PermitRootLogin требуется только потому, что вы используете root. Я не уверен, требуется ли PermitEmptyPasswords, но он работает для меня.

Еще одна (маленькая) вещь, не sudo su - , делать sudo -i .

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