У меня есть сервер, к которому я часто обращаюсь по ssh, потому что я на нем вычисляю. Теперь вычислительный центр явно запрещает SSH-ключи, потому что они «небезопасны». Они считают, что вводить мой пароль на клавиатуре каждый раз, когда это возможно перед другими людьми, - гораздо более безопасный способ входа в систему.
В настоящее время; Я не могу изменить свое мнение (я пытался).
Есть ли способ хотя бы временно хранить пароли SSH, как GIT может хранить пароли в кеше в течение определенного времени?
the computing center explicitly forbids SSH-keys because they are "insecure"
Моё мнение по этому поводу? Найдите новый хост сервера, потому что ваш, очевидно, неумелый.publickey
аутентификации. Если вы отключитеpassword
аутентификацию на сервере, вы не допустите, чтобы все злоумышленники пытались угадать пароли. И если злоумышленник попытается провести небольшую атаку на клиента, который ранее не сохранял открытый ключ сервера, вы защищены гораздо лучше,publickey
чем если бы вы использовалиpassword
аутентификацию.Ответы:
Повторное использование соединения
SSHv2 позволяет одному и тому же аутентифицированному соединению устанавливать несколько «каналов» - интерактивную оболочку, пакетную команду, SFTP, а также вторичные, такие как переадресация агента или переадресация TCP. Ваш сервер, вероятно, поддерживает мультиплексирование соединений по умолчанию. (Если ваши администраторы жалуются, он нигде не кэширует ваш пароль - он кэширует все соединение.)
С OpenSSH у вас есть
ControlMaster
иControlPath
опции (-M и -S), чтобы использовать это:Запустите «главное» SSH-соединение, используя
-M
. (Поскольку у вас еще нет ControlPath в вашей конфигурации, вам нужно указать его в командной строке, используя-S
. Он должен жить долго, поэтому я добавляю-fN
опции для перетаскивания в фоновый режим ; в противном случае они технически необязательны.)Вы вернулись к местной оболочке.
Начать новое соединение через мастера:
Ты в.
Чтобы сделать это полезным для Git / rsync / SFTP, вам нужно настроить его
ControlPath
в своей конфигурации, потому что вы не сможете-S
все время указывать :Вы можете автоматизировать это - последние версии OpenSSH также имеют
ControlPersist
автоматическое установление основного соединения в фоновом режиме, если его еще нет. Это позволяет пропустить шаг 1 и просто использовать ssh, как обычно.Конфигурация в
~/.ssh/config
:Первое соединение запрашивает пароль:
Второе не:
Чтобы управлять мастером мультиплекса (остановить его или настроить переадресацию TCP), используйте
-O
опцию.Подобный метод поддерживается в последних версиях PuTTY .
источник
использование
sshpass
sshpass ( github , man page ) - это инструмент, который автоматически передает пароль в ssh. Безопасный способ использовать это это:
Это будет считывать пароль
~/.ssh/compute_password
, подобно файлу с закрытым ключом без ключевой фразы. Вы можете поместитьsshpass
команду в небольшой скрипт оболочки или псевдоним оболочки, чтобы избежать ввода этой полной команды. К сожалению, я не нашел способ сделать это из~/.ssh/config
.(Можно также указать пароль непосредственно в командной строке
sshpass
, но этого следует избегать, так как это дает утечку паролю любому, кто может это сделатьps
)Сравнение с другими методами
Этот подход, конечно, менее безопасен, чем правильно настроенная аутентификация с открытым ключом, но вы, вероятно, уже это знаете.
Он также менее безопасен, чем ответ @ grawity о повторном использовании соединения, но имеет то преимущество, что вообще не вводит пароль в интерактивном режиме.
Вы могли бы рассмотреть ответ @ grawity как альтернативу auth pubkey с парольной фразой и кэшированием закрытого ключа (т.е.
ssh-agent
). Тогда мой ответ будет альтернативой аутентификации pubkey без ключевой фразы в файле закрытого ключа.источник
head -c 16 /dev/urandom | base64
для 128 бит) и не используете его в других системах, он с точки зрения безопасности аналогичен ключу. Как трудно перебор, и как просто использовать из файла, если не зашифрован. Это касается и плохого парня, если он получит файл. Единственное отличие состоит в том, что пароль отправляется на сервер как есть, в то время как ключи имеют более точную математику, чтобы доказать, что вы владеете правильным закрытым ключом, не раскрывая его, и с точки зрения удобства использования труднее зашифровать файл, содержащий пароль (нет стандартные инструменты).Используйте менеджер паролей.
Некоторые менеджеры паролей (например, KeePassXC) имеют функцию автоматического ввода. Вы сохраняете пароль в диспетчере паролей, разблокируете базу данных при запуске менеджера и каждый раз, когда
ssh
запрашиваете пароль, вы нажимаете комбинацию клавиш, которая заставляет диспетчер паролей записать ваш длинный пароль в консоль.Не нужно ничего копировать, запоминать что-либо (кроме пароля для разблокировки базы данных), и вы можете иметь надежный пароль, не используя эти 30 символов каждый раз, когда вы пытаетесь войти в систему.
Вы можете выбрать свой любимый из этого списка: https://en.wikipedia.org/wiki/List_of_password_managers
источник
gnome-terminal
меняет свой заголовок на,ssh somehost
когда ssh запрашивает у меня пароль, чтобы вы могли сопоставить окно заголовка с этим без проблем. Я ничего не знаю о функциях «анти-кейлоггинга» - я ежедневно использую KeePassXC в терминале, и худшее, с чем мне пришлось столкнуться, - это выбрать подходящую учетную запись из списка.Другой альтернативой является использование ssh-клиента с графическим интерфейсом. На Windows очевидным выбором будет PuTTY . Существует также версия PuTTY для Linux, в частности, большинство дистрибутивов на основе Debian, таких как Ubuntu, обычно включают PuTTY в свои репозитории.
Другой действительно хороший клиент - Termius . Он поддерживает не только Windows и Linux, но также OSX, iOS и Android. Несмотря на то, что он был в первую очередь предназначен для телефонов, настольная версия на самом деле довольно хорошая.
Если я не ошибаюсь, у почтенного Гипертерминала в Windows также есть / был встроенный ssh-клиент, но я не пользовался окнами очень долгое время, поэтому я не совсем уверен.
Все клиенты с графическим интерфейсом имеют возможность сохранять настройки подключения, которые включают в себя ваше имя пользователя и пароль.
источник