Я часто подключаюсь по 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