Из бесчисленных источников в Интернете я узнал, что (примерно) для входа на удаленный сервер без пароля: сгенерируйте ключ ssh, поместите версию pub в авторизованные_кейки на удаленной системе; поместите приватную версию в вашу локальную директорию ~/ .ssh/; chmod это до 0600 и пуф, ты в. Хотя это в основном правильно, я считаю, что ключ (пара) должен называться id_rsa (id_rsa.pub) или id_dsa (id_dsa.pub), чтобы SSH предлагал его удаленным серверам.
Позвольте мне вернуться немного назад. У меня есть логин SurnameG
на моем локальном Mac. У меня есть учетная запись SurnameG в удаленной системе, другой сервер.
Я скопировал содержимое ~/.ssh/surnameg.pub
в /home/surnameg/.ssh/authorized_keys этой системы. Я протестировал с опцией -i
с моего Mac в ssh, и он работает нормально.
У меня есть ~/.ssh/id_rsa
(который я сгенерировал для использования с github.com).
И, конечно же, у меня есть ~/.ssh/surnameg
и даже некоторые другие ключи, которые не "пробуются", когда я пытаюсь войти в систему другим способом на otherserver.com :
ssh 1.2.3.4
Здесь я пытаюсь использовать SurnameG
(текущий локальный вошедший в систему пользователь) для входа в мою SurnameG
запись SurnameG на другом сервере. Я хочу, чтобы openssh предлагал ~/.ssh/surnameg
при попытке соединения, но это не так - давайте более подробно рассмотрим вариант с подробным описанием:
BOX:~ SurnameG$ ssh -v 1.2.3.4
OpenSSH_5.9p1, OpenSSL 0.9.8y 5 Feb 2013
debug1: Reading configuration data /Users/SurnameG/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to 1.2.3.4 [50.112.132.124] port 22.
debug1: Connection established.
debug1: identity file /Users/SurnameG/.ssh/id_rsa type 1
debug1: identity file /Users/SurnameG/.ssh/id_rsa-cert type -1
debug1: identity file /Users/SurnameG/.ssh/id_dsa type -1
debug1: identity file /Users/SurnameG/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
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: 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: Server host key: RSA ax:64:3e:4a:e3:2c:e4:30:dd:36:a4:a0:9x:fa:ba:6b
debug1: Host '1.2.3.4' is known and matches the RSA host key.
debug1: Found key in /Users/SurnameG/.ssh/known_hosts:88
debug1: ssh_rsa_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,gssapi-keyex,gssapi-with-mic
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/SurnameG/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug1: Trying private key: /Users/SurnameG/.ssh/id_dsa
debug1: No more authentication methods to try.
Любопытно, что openssh предлагает только ~/.ssh/id_rsa, но это еще не все. Это также "пытается" ~/.ssh/id_dsa? Я не уверен в разнице между этими двумя (предлагая и пытаясь). Во всяком случае, если я правильно читаю, openssh никогда не пробует другие мои личные ключи в ~/.ssh/*
.
Хорошо, я знаю, что могу явно описать каждый сервер в ~/.ssh/config
чем-то вроде
Host otherserver
HostName 1.2.3.4
User surnameg
IdentityFile ~/.ssh/surnameg
а затем войдите с
ssh otherserver
и это прекрасно, денди и отлично работает. Но на самом деле мой ~/.ssh/config становится громоздким. К сожалению, я не cd ~/.ssh && git init
давным-давно. Но я отвлекся.
У меня такой вопрос: существует ли более простой, более быстрый и автоматизированный способ заставить ssh динамически пробовать больше ключей в каталоге ~/.ssh при попытке входа в систему, или редактирует вашу ~/.ssh/config для каждого сервера, который вам нужен подключиться к единственному способу настройки ssh? Я что-то не так понял о том, как SSH должен работать?