У меня есть два ноутбука (Host A и Host C) с динамическими IP-адресами и один настольный компьютер (Host B), все они работают под управлением (Ubuntu) Linux. Сейчас я настроил все так, чтобы иметь доступ к Host A с Host C следующим образом. У меня есть туннель ssh от A до C с командой на hostA вида
autossh -NR 10023:localhost:22 [email protected]
Я использую пару ключей, чтобы команда autossh действительно могла быть выполнена.
Затем я могу подключиться по ssh к B из C, а затем подключиться к a с помощью
ssh -p 10023 localhost
запрашивает пароль и я могу войти. Никаких проблем.
Однако я хотел бы улучшить безопасность на A, поэтому для входа требуется ключ. Поэтому я создаю пару ключей с помощью ssh-keygen на HostB, называю свой ключ customkey_rsa и даю ему пароль. Тогда customkey_rsa.pub — это открытый ключ. Я не могу заставить ssh-copy-id работать с этим туннелем, поэтому я просто вхожу в A из C и выполняю scp через customkey_rsa.pub с Host B. Затем я добавляю ключ с помощью
cd .ssh & cat customkey_rsa.pub >> authorized_keys
Теперь, когда я пытаюсь войти, я все еще получаю запрос на пароль. Похоже, что он доходит до попытки ввести ключ, но каким-то образом сдается в последнюю секунду, как показано ниже
из Б
ssh -v -i customkey_rsa -p 10023 localhost
дает
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Connecting to localhost [127.0.0.1] port 10023.
debug1: Connection established.
debug1: identity file customkey_rsa type 1
debug1: identity file customkey_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2 pat OpenSSH_6.6.1* compat 0x04000000
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA (redacted)
debug1: Host '[localhost]:10023' is known and matches the ECDSA host key.
debug1: Found key in /home/ohnoplus/.ssh/known_hosts:2
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
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 RSA public key: customkey_rsa
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
ohnoplus@localhost's password:
Обратите внимание, что разрешения для ~/.ssh
на хосте A равны , 700
а для .ssh/authorized_keys
— 600
.
Итак, мой вопрос. Почему это не сработало и как это исправить?
Что я рассмотрел и что не помогло:
Проработал список предложений. Разрешения установлены правильно в моей системе, а другие решения не подходят. Почему я все еще получаю запрос на ввод пароля при использовании SSH с аутентификацией по открытому ключу?
Аналогично, но решение не предоставлено: ssh с ключом rsa запрашивает пароль
У меня нет файла "authorized_keys2" ssh запрашивает пароль, несмотря на .ssh/authorized_keys
решение1
Вам необходимо добавить:
PasswordAuthentication no
в ваш sshd_config (это конфигурация сервера)