Я пытаюсь использовать 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)
И если это не сработает, просто посмотрите на выходные данные отладки и посмотрите, где что-то задыхается для отладки.