SSH в поле с часто изменяемым IP

Самый легкий способ надежно достигнуть свободное пространство на диске использует WMI. При попытке проанализировать вывод dir Вы получаете все виды забавных проблем, по крайней мере с версиями Windows на других языках. Можно использовать wmic запрашивать свободное пространство на диске:

wmic logicaldisk where "DeviceID='C:'" get FreeSpace

Это произведет что-то как

FreeSpace
197890965504

Можно вызвать это в одну строку путем добавления /format:value переключатель:

> wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value

FreeSpace=197890965504

Существует несколько пустых строк там, хотя (приблизительно три или четыре), которые не предоставляют себя хорошо для обработки. К счастью for команда может удалить их для нас, когда мы делаем маркирование:

for /f "usebackq delims== tokens=2" %x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%x

Хорошая вещь здесь состоит в том, что, так как мы только используем второй маркер все пустые строки (которые не имеют второго маркера) проигнорированы.

Не забудьте удваиваться % знаки при использовании этого в пакетном файле:

for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%x

Можно теперь использовать свободное пространство, которое хранится в переменной среды %FreeSpace%.

22
задан 22 October 2010 в 01:13
8 ответов

Отредактируйте свой ssh_config файл и добавьте, изменяют эту строку:

CheckHostIP no

Значения по умолчанию CheckHostIP к 'да'. То, что это делает, должно сделать просто вид проверки, которую Вы приводите к сбою. Превращение его от средств, это просто полагает, что IP является переменным, и будет к проверке ключа по сравнению с именем хоста.

19
ответ дан 28 November 2019 в 20:22

Дополнение: Вы могли попытаться только отключить проверку CheckHostIP на то имя:

Host *
  [ global settings .. ]

Host very.dynamic.host
  CheckHostIP no
25
ответ дан 28 November 2019 в 20:22
  • 1
    , Это может быть наилучшим вариантом уменьшает влияние безопасности отключения проверки IP. –  Espo 22 October 2010 в 15:58

Можно установить StrictHostKeyChecking=no в ssh клиентской конфигурации (т.е. ~/ssh/config файл на машине, которую Вы подключаете от), для игнорирования предупреждения.

1
ответ дан 28 November 2019 в 20:22

Вы могли поместить CheckHostIP no в Ваш ~/.ssh/config файл, но это оставляет Вас открытыми для спуфинга нападений. Если Вы не обеспокоены этим, то эта установка должна выключить known_hosts проверить.

1
ответ дан 28 November 2019 в 20:22

Сделайте known_hosts только для чтения.

-2
ответ дан 28 November 2019 в 20:22

Я использую эти хитрые варианты, чтобы обойти эту проблему. (Открытый ключ моего хоста регенерируется довольно часто. Таким образом, это удаляет проверку IP и ключа)

ssh remoteServerName -l username -o "UserKnownHostsFile=/dev/null"

Вы также можете просто использовать это, если ключ остается тем же, но IP изменяется:

ssh remoteServerName -l username -o "CheckHostIP=no"
2
ответ дан 28 November 2019 в 20:22

Многие ответы здесь будут работать, но технически это обходные пути. OpenSSH уже имеет встроенную функцию с учетом этого: HostKeyAlias ​​.


В файле .ssh / config добавьте HostKeyAlias ​​ в конфигурацию хоста:

host myserver.example.com
HostKeyAlias myserver.example.com

При этом подключение к серверу myserver.example.com не будет использовать имя хоста или IP-адрес для локальной ссылки - всегда будет только только используйте данный HostKeyAlias ​​при подключении к этому серверу. Для меня имеет смысл использовать имя хоста, но вы, конечно, можете использовать любой псевдоним, который вам нравится.


Типичные конфигурации для меня для динамических хостов выглядят так:

host myserver
hostname myserver.dyn.example.com
HostKeyAlias myserver.private.example.com

Это также может быть использовано в некоторых малоизвестных сценариях, когда вы знаете, что несколько ваших серверов имеют одинаковые ключи хоста (обычно это должно быть , а не ). Тогда это предотвратит дублирование записей. В будущем, если ключи изменятся законно, вам не придется заменять / удалять несколько записей. Единственный. Серверы Gitlab Geo являются хорошим примером этого.


Что касается очистки файла known_hosts, я бы посоветовал посмотреть другие вопросы / ответы, конкретно связанные с поддержанием / удалением устаревших записей known_hosts. Например, см. Как управлять моим файлом .ssh / known_hosts ; Меня особенно впечатлил ответ user1953828, хотя я вижу, что у него не так много голосов (пока). :)

3
ответ дан 28 November 2019 в 20:22

Я избегаю добавления отпечатков пальцев в мой файл known_hosts при подключении к машинам AWS переходного периода. Я использую команду типа

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i secret.pem ec2-user@10.0.0.5

для подключения к ним. Она не будет спрашивать, хотите ли вы добавить машину "в список известных хостов". Замените 10.0.0.5 на IP-адрес вашей машины и secret.pem на полный путь вашего ключа Ssh. Вы все еще получите предупреждение, что 10.0.5 был добавлен, но он действительно исчез в /dev/null. Я делаю это достаточно часто, чтобы установить псевдоним в моем ~/.profile

alias awsssh='ssh -i secret.pem -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

I reserve ssh ec2-user@example.com type commands for machines were went to the trouble of check the fingerprint.

.
0
ответ дан 28 November 2019 в 20:22

Теги

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