У меня есть этот конфиг в ~/.ssh/config
:
Host *.myhost.com
User awwuser
IdentityFile my-keys/myhost/id_dsa
Дело в том, что у меня есть 2 разных закрытых ключа для разных хостов, а также у меня есть 2 разных пользователя для этих хостов, поэтому я хочу не записывать их каждый раз через параметры ssh. Как я узнал, я могу создать файл конфигурации, который автоматически установит имя пользователя и закрытый ключ для использования.
Как я понял из документации, все сделал правильно.
Но эта конфигурация, похоже, вообще не работает. Когда я делаю ssh subdomain.myhost.com
он пытается подключиться к нему, используя текущее имя пользователя, а не то, которое указано в config. Когда я указываю имя пользователя с помощью параметров ssh, он не видит правильный файл идентификации. Так что моя конфигурация вообще не работает.
Пожалуйста, порекомендуйте.
P.S. Я использую open ssh 6.0
Во-первых, вы можете иметь в виду, что ваши параметры конфигурации SSH читаются сверху вниз.
В зависимости от ваших настроек у вас также может быть глобальный раздел в настройках по умолчанию. Примерно так.
Host *
ForwardAgent yes
ForwardX11 yes
ForwardX11Trusted yes
Protocol 2
AddressFamily inet
SendEnv LANG LC_*
HashKnownHosts no
GSSAPIAuthentication no
Если этот раздел находится перед вашим разделом, тогда настройки из *
будет использоваться раздел. Как правило, вы хотите упорядочить свой файл конфигурации SSH от самых конкретных настроек до наименее конкретных.
Так что-то вроде этого.
host fully.qualitified.tld
...
host *.example.com
...
host *
Вы также должны помнить, что совпадение имен совпадает с точным именем, которое вы вводите в командной строке. Он не принимает во внимание поиск DNS, который вы можете получить, потому что у вас есть myhost.com в вашем пути поиска.
Итак, если вы запустите команду ssh foo
, и у вас есть настройка DNS, где он разрешает foo в foo.example.com, клиент SSH не будет использовать какие-либо настройки из host foo.example.com
. Вы можете облегчить себе жизнь, добавив несколько псевдонимов в конфигурационный файл, например, host foo.example.com foo.example foo
.
Поскольку вы упомянули, у вас есть несколько ключей. Имейте в виду, что вам может быть намного лучше просто запустить агент SSH на своем клиенте и добавить все свои ключи. Затем просто позвольте SSH согласовать, какой ключ использовать автоматически. Вы также можете иметь несколько IdentityFile
варианты в host *
раздел. SSH просто попробует их все по очереди.
Всем спасибо за внимание. Я обнаружил проблему, это был неправильный домен в имени хоста, и мой путь к IdentityFile не был абсолютным. После того, как я установил правильное имя хоста и полный путь, все начало работать.