Входной разделитель 'чтения', встроенного в Bash

[116413]Сервер не может знать, есть ли в ключе, который вы используете для подключения к нему, кодовая фраза или нет. [12213]Пароль используется для шифрования ключа SSH для хранения. Когда вы используете SSH-ключ, он расшифровывается в память с помощью ключевой фразы, чтобы его можно было использовать для подключения к серверу. Таким образом, сервер не может сказать, был ли используемый ключ расшифрован или нет.[12214]Если закрытые ключи хранятся [116791]на сервере [116792] (а не используются для [116793]соединения[116794] с сервером), вы можете это проверить.[12215]Ответ Тайлера - это самый простой способ найти незашифрованные ключи, хотя он может сломаться, если OpenSSH введет новый формат ключей (что они и сделали недавно). Альтернативой является использование ssh-keygen для проверки, но у этого подхода есть свои проблемы.[12216]Сложно написать сценарий этой проверки, потому что инструменты OpenSSH очень привередливы в отношении своих ключей, и они также очень хотят поговорить с пользователем, если он найдет зашифрованный ключ. Вот один (грубый) способ проверить, есть ли у вас инструмент [116795]setsid[116796] из пакета [116797]util-linux[116798]:[12217]Если там написано "Unencrypted private key!", то вы определённо его нашли. Если нет, вы можете по крайней мере поспорить, что если это незашифрованный ключ, SSH не будет использовать его как есть.[12218](N.B. если вы случайно обнаружите, что [116799]/etc/ssh/ssh_host_rsa_key[116800] или что-то подобное является незашифрованным, оставьте это в покое - так и должно быть!)[116427].
2
13.04.2017, 15:22
1 ответ

Чтобы принять все, что пользователь входит, используйте эту форму

IFS= read -r name

, которые примут ведущие / конечные / внутренние пространства, а также буквальные обратные косания.

1
27.01.2020, 22:21

Теги

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