Как программно принимать ключи хоста SSH, если известен отпечаток пальца?

Ошибка браузера Chrome при создании снимков экрана. См. этот отчет об ошибке .

4
16.07.2017, 04:19
3 ответа

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

1
27.01.2020, 20:52

Если у вас есть (копия )файла публичного ключа сервера, как следует из вашего имени, вы можете использовать ее для создания временного файла известных _хостов, например:

sshfoo() {
  # assumes first arg is always user@host, otherwise adjust
  echo ${1#*@} $(cat foo-pubkey) >temp_myhosts
  ssh -oUserKnownHostsFile=temp_myhosts "$@"
  # or if you don't have anything you need in.ssh/known_hosts,
  # just overwrite that and omit the -o 
  rm temp_myhosts # or just leave it and replace it next time
}
# can use ssh for the function name if you always want this change,
# or if in the cases you don't want it you remember to override 
# with command ssh or $(which ssh) or /bin/ssh or whatever 

Если у вас действительно есть известная _строка hosts (, которая представляет собой поле host, за которым следует содержимое файла публичного ключа ), вы можете аналогичным образом изменить:

awk -vh="${1#*@}" "{$1=h;print}" <hosts_line >temp_myhosts 

или если у вас есть файл с этой строкой среди других, возможно, обычные известные _хосты:

awk -vh="${1#*@}" "$1~/oldname/{$1=h} 1" <.ssh/known_hosts >temp_myhosts 

et cetera et cetera ad Юл Бриннер.

1
27.01.2020, 20:52

Одним из обходных путей может быть использование ssh-keyscanв качестве дополнительного шага для получения отпечатка ssh (s ), а затем замена поля хоста подстановочным знаком *перед сохранением в файл. Например:

$ ssh-keyscan -p 1234 example.com | perl -pe 's/.*? /* /' > example_fp

Затем вы ссылаетесь на example_fpвсякий раз, когда вам нужно подключиться к этому серверу (независимо от порта/dns/ip):

$ ssh -o UserKnownHostsFile=example_fp -p 4321 user@example.com
2
27.01.2020, 20:52

Теги

Похожие вопросы