macOS ssh игнорирует опцию UserKnownHostsFile

macOS ssh игнорирует опцию UserKnownHostsFile

Я часто подключаюсь по ssh к виртуальным машинам через jump host, которые имеют эфемерные IP-адреса и часто имеют меняющиеся ключи ssh. Я не хочу получать запрос, если ключ ssh меняется, или запрос на принятие ключа ssh.

Я читал о параметрах StrictHostKeyChecking и UserKnownHostsFile, но, похоже, они не оказывают никакого эффекта. При передаче UserKnownHostsFile=/dev/null в командной строке ключ хоста ssh всегда добавляется в ~/.ssh/known_hosts (теперь у меня десятки записей), и мне всегда предлагается принять ключ ssh.

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

Вот команда ssh, которую я использую:

ssh  -o 'ConnectTimeout=10' \
     -o 'StrictHostKeyChecking=no' \
     -o 'UserKnownHostsFile=/dev/null' \
     -o 'CheckHostIP=no' \
     -i ~/.ssh/my_ident \
     "username@ip" \
     -J "username@jump"

Кроме того, если проблема в части «=», я попробовал это, но результат все равно тот же:

ssh  -o 'ConnectTimeout 10' \
     -o 'StrictHostKeyChecking no' \
     -o 'UserKnownHostsFile /dev/null' \
     -o 'CheckHostIP no' \
     -i ~/.ssh/my_ident \
     "username@ip" \
     -J "username@jump"

Я использую macOS 10.14.4, OpenSSH_7.9p1, LibreSSL 2.7.3

Есть идеи, почему параметры -o игнорируются или не выполняют то, что мне нужно?

решение1

Это может быть не связано с MacOS. Такие параметры, как StrictHostKeyChecking, UserKnownHostsFileи CheckHostIPотносятся только к целевому хосту, к которому вы подключаетесь. В вашем случае это ip. Они не оказывают никакого влияния на jumpхост, указанный как часть аргумента -J.

Я считаю, что нет способа указать эти настройки для хоста перехода в командной строке. Но вы можете добавить эти параметры в свой ~/.ssh/configфайл, что-то вроде этого:

Host jump
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
    CheckHostIP no

Связанный контент