Я знаю, что здесь есть десятки вопросов о том, как подключиться к SSH-серверу без ввода пароля каждый раз , и ответом всегда будет «использовать открытый ключ». Ну, я нахожусь в редком случае, когда это действительно не вариант. По какой-то необъяснимой причине демон OpenSSH на сервере, к которому я пытаюсь подключиться, настроен с
RSAAuthentication no
PubkeyAuthentication no
в /etc/ssh/sshd_config
. У меня нет административного доступа на сервере, поэтому я не могу изменить эти или любые другие параметры конфигурации сервера. (Я, конечно, имею полный контроль над конфигурацией клиента: OpenSSH 5.8 в Linux.)
Каковы мои варианты, и в частности, какой самый безопасный вариант, чтобы избежать необходимости вводить мой пароль каждый раз, когда я хочу SSH на этот сервер? Я держу свои собственные компьютеры достаточно надежно защищенными, поэтому давайте предположим, что риски безопасности при сохранении пароля в файле на клиенте приемлемо низки, если это действительно необходимо.
Другими способами аутентификации, которые может принять сервер, являются, очевидно, GSS API (о котором я ничего не знаю), интерактивная клавиатура (о которой я тоже ничего не знаю) и пароль. Вот некоторые соответствующие параметры конфигурации:
#ChallengeResponseAuthentication yes
#KerberosAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
#UsePAM no
и вот -vv
трассировка отладки ( ):
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
/etc/krb5.keytab
? GSSAPI (Kerberos) может быть простым в настройке на стороне клиента; Я должен был бы попросить имя хоста сервера, хотя. (Также:keyboard-interactive
очень похоже наpassword
, за исключением одного приглашения «Пароль:».)/etc/krb5.keytab
, но это так/etc/krb5/krb5.keytab
. У меня нет доступа к содержимому. Имя сервераsftp.pass.psu.edu
(я не думаю, что присвоение этого имени вредно), если оно поможет вам объяснить процедуру.Ответы:
В этом случае написание (или лучшая запись) ожидаемого сценария будет одним из ваших вариантов.
Каждая система индивидуальна, поэтому сценария не будет, но с помощью функции автоматического ожидания очень легко записать сценарий для этой цели.
источник
Судя по собранной информации, сервер
sftp.pass.psu.edu
поддерживает аутентификацию Kerberos 5 (GSSAPI) и находится на уровнеdce.psu.edu
.Kerberos очень распространен в сетях со многими серверами и рабочими станциями; во многих крупных учебных заведениях это создано. Одним из преимуществ, по сравнению с аутентификацией с открытым ключом, является то, что один
kinit
автоматически предоставляет учетные данные всем машинам в области Kerberos, без необходимости копировать открытые ключи на каждую. Другой - поддержка протокола - одни и те же учетные данные Kerberos могут использоваться с более чем 30 протоколами (почта, файловые системы, базы данных ...), а не только с SSH.(Что касается «невежественных администраторов только для Windows»: на
dce.psu.edu
самом деле сфера основана на Active Directory и размещена на серверах Windows.)Попробуйте выполнить следующие действия:
Войдите в Kerberos. (Инструменты
kinit
иklist
могут быть в "krb5-user" или аналогичном пакете, если они еще не включены в систему.)Если ошибки не отображаются, вход был успешным.
klist
должен показать элемент "krbtgt/dce.psu.edu@...
".Теперь подключитесь к серверу SSH, с
-vv
параметрами; если аутентификация прошла успешно, хорошо.Если это не так, возможно, вам придется отредактировать
/etc/krb5.conf
файл. Под[domain_realm]
разделом добавьте следующее:При стандартных настройках Krb5 билет, полученный в # 1, должен быть действителен в течение 10 часов и продлеваться до недели. Однако у меня нет возможности проверить настройки.
Если вы хотите сохранить пароль в файле, простой
kinit your_principal < password.txt
должен работать, хотя это не совсем надежно.С помощью
ktutil
него можно создать «keytab» для использования вместо пароля.и войдите, используя:
источник
ssh -vv
схожи с трассировкой, которую я выложил, за исключением того, чтоdebug1: Unspecified GSS failure. Minor code may provide more information\n Server not found in Kerberos database
вместо файла с кэшем учетных данных ничего не найдено.host/sftp.pass.psu.edu
, но ее настоящее имя должно было бытьhost/lutz.cac.psu.edu
. Вы можете обойти это, добавив "128.118.2.85 sftp.pass.psu.edu
" в ваш / etc / hosts, но это немного уродливо - было бы намного лучше, если бы администраторы исправили сервер ...host/lutz.cac.psu.edu
иhost/sftp.pass.psu.edu
) в одной таблице ключей. (Предыдущие версии использовали только первую.)/etc/hosts
как предложено я получаюdebug1: Unspecified GSS failure. Minor code may provide more information Generic error (see e-text)
. Ничто другое в выводе не имеет отношения к ошибке.Я бы рассмотрел смешанное решение, когда вы вводите пароль только один раз, и компьютер поддерживает сокет для удаленного SSH-сервера. Вы можете выполнить следующие шаги, чтобы настроить
ControlMaster
именно по этой причине.источник
screen
для защиты оболочек от прерывания при разрыве соединения или зависании.