2

Я пытаюсь использовать SSH-клиент для входа на удаленный сервер. На этом сервере мой открытый ключ, и у меня есть закрытый ключ, который был создан без ключевой фразы.

В Windows я могу войти через PuTTY без проблем.

В Mac OS X, когда я использую SSH-клиент, Windows запрашивает всплывающее окно с паролем, и что бы я ни вводил, SSH запрашивает у меня пароль. Здесь также не имеет значения, что я вхожу, это всегда пишет, что разрешение запрещено.

Я обнаружил, что подобные проблемы могут возникать, когда закрытый ключ имеет формат PPK (что было в моем случае), поэтому я попытался преобразовать его в PEM, но это не помогло:

puttygen id.ppk -O private-openssh -o id.pem

Дополнительная информация:

Моя конфигурация SSH содержит путь к закрытому ключу для хоста, к которому я пытаюсь подключиться. Я также попытался использовать параметр ssh -i, чтобы указать ключ вручную, но с теми же результатами.

Команда, используемая для создания формата PEM, была 'puttygen id.ppk -O private-openssh -o id.pem'

Вывод журнала (только соответствующая часть)

debug1: Authentications that can continue: publickey,password debug1: Trying private key: /Users/josef/.ssh/talnet_rsa debug1: read PEM private key done: type RSA debug3: sign_and_send_pubkey: RSA #I removed these for security reasons# debug2: we sent a publickey packet, wait for reply debug1: Authentications that can continue: publickey,password debug2: we did not send a packet, disable method debug3: authmethod_lookup password debug3: remaining preferred: ,password debug3: authmethod_is_enabled password debug1: Next authentication method: password

3 ответа3

0

Я пытаюсь использовать SSH-клиент для входа на удаленный сервер. На этом сервере мой открытый ключ, и у меня есть закрытый ключ, который был создан без ключевой фразы.

Это хорошее начало для установки без пароля. В Windows вы четко добавили открытый ключ правильно. Это то , что вам нужно сделать , чтобы добавить публичный ключ к authorized_keys файл Mac OS X для пользователя. Вот шаги, которые вы должны использовать, если у вас уже есть файл открытого ключа (~/.ssh/id_rsa.pub), расположенный на вашем удаленном сервере.

Предисловие.

Судя по вашим комментариям и недавним изменениям, у вас, похоже, есть файл .pem (id.pem), который является просто контейнерным форматом, который включает в себя открытый и закрытый ключи в сертификате. Не уверен, как Mac OS X будет использовать .pem напрямую, но для моего предпочтительного метода создания установок без пароля я бы порекомендовал вам извлечь открытый ключ, прежде чем продолжить. Это достаточно просто сделать что-то вроде этого в системе Mac OS X из терминала:

openssl rsa -in id.pem -pubout > ~/id_rsa.pub

Конечно, измените имя / путь к id.pem чтобы он соответствовал пути, где находится этот файл в системе. Путь ~/id_rsa.pub указывает команде извлечь id_rsa.pub в ваш домашний каталог.

А для тех, кто видит, что я делал выше и что я делаю ниже, да, команда, вероятно, может быть чем-то вроде этого, чтобы сбросить открытый ключ прямо в authorized_keys:

openssl rsa -in id.pem -pubout >> ~/.ssh/authorized_keys

Но этот ответ заключается в том, чтобы отслеживать детали, понимать процесс и видеть, где что-то «сломалось». Таким образом, чистый сброс открытого ключа непосредственно в ~/.ssh/authorized_keys быстрее, но не обязательно лучше для целей обучения.

Короче ответ.

Короче говоря , я считаю , что если id_rsa.pub был добавлен в authorized_keys то это проблема с разрешениями , которые могут быть решены только выполнив следующую команду вашего пользователя в системе Mac OS X:

chmod 600 ~/.ssh/authorized_keys

Если это не сработает, прочитайте подробности ниже, чтобы увидеть, пропустили ли вы шаг.

Более длинный ответ.

Сначала скопируйте содержимое ~/.ssh/id_rsa.pub в authorized_keys ключи :

nano ~/.ssh/authorized_keys

Просто поместите содержимое ~/.ssh/id_rsa.pub at the bottom of ~/.ssh/authorized_keys . If you do not have an файла author_keys, вы создадите его file already you will be creating one with that команды nano, command so you should set proper permissions on the file— файлу - 600 'aka owner/user только для чтения и записи - чтобы SSH не подавлял его следующим образом:

chmod 600 ~/.ssh/authorized_keys

Теперь, когда это сделано, вы в значительной степени сделали. На последнем шаге вы просто входите в свою машину на своей машине, и вам будет выдано предупреждение «известные хосты» примерно так:

The authenticity of host 'my_host(123.456.78.90)' can't be established.
ECDSA key fingerprint is ab:12:cd:34:ef:56:gh:78:ij:90:kl:12:mn:34:op:56.
Are you sure you want to continue connecting (yes/no)? yes

Просто ответьте « yes и тогда вы получите следующее сообщение:

Warning: Permanently added 'my_host,123.456.78.90' (ECDSA) to the list of known hosts.

И теперь вы должны быть готовы. Любой логин SSH, который вы вводите на эту машину, будет на 100% бесполезным.

Если вы хотите отладить соединение, обязательно используйте параметр -v (подробный), например так:

ssh -v myuser@my_host

Если все работает хорошо, вы получите подробный - но чистый - вывод примерно так:

OpenSSH_5.9p1 Debian-5ubuntu1.4, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to my_host [123.456.78.90] port 22.
debug1: Connection established.
debug1: identity file /home/myuser/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /home/myuser/.ssh/id_rsa-cert type -1
debug1: identity file /home/myuser/.ssh/id_dsa type -1
debug1: identity file /home/myuser/.ssh/id_dsa-cert type -1
debug1: identity file /home/myuser/.ssh/id_ecdsa type -1
debug1: identity file /home/myuser/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.4
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.4 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.4
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA ab:12:cd:34:ef:56:gh:78:ij:90:kl:12:mn:34:op:56
debug1: Host 'my_host' is known and matches the ECDSA host key.
debug1: Found key in /home/myuser/.ssh/known_hosts:3
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: /home/myuser/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to my_host  ([123.456.78.90]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 3.13.0-34-generic x86_64)

И если это не сработает, просто посмотрите на выходные данные отладки и посмотрите, где что-то задыхается для отладки.

0

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

Может быть возможно сгенерировать ключ без пароля, но тогда любой, кто получит этот ключ, сможет использовать его без ограничений. Это не рекомендуется делать, и ваш Mac не будет запрашивать пароль, если вы его не установили.

Я могу ошибаться, если так, введите пустой пароль; Я имею в виду пароль «ничего здесь».

0

Если вы успешно преобразовали ключ PPK в ключ openSSH с помощью puttygen.exe он должен работать.

Я предполагаю неправильную конфигурацию здесь. Попробуйте chmod 700 <private keyfile> файл > в вашей системе Mac OS X.

Вероятно, также проверьте chown . Ваш пользователь должен держать правильный UID для ключа.

Также @Jakuje сказал в комментарии, используйте ssh -vvv ... для решения проблем с подключением.

Как сказал @Schwertspitze, это проблема безопасности, о которой вы должны знать.

РЕДАКТИРОВАТЬ

О настройке правильных прав доступа ... В другой теме есть листинг для разных файлов.

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