openssh madness
Wednesday, 29 May 2013 14:40![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Кажется openssh немного по-дебильному написан.
Вот есть SSH_ASKPASS, да? Но она используется ТОЛЬКО если нет связанного терминала И переменная DISPLAY непустая И стоит BatchMode=no (иначе парольная аутентификация вообще отключается).
- The option BatchMode specifies whether a username and password querying on connect will be disabled. This option is useful when you create scripts and dont want to supply the password.
Минимально необходимый набор, соответственно:
Дальше выясняется что аскпасу отдают буквально строку "test@localhost's password:" и больше ничего. И как, скажите, это говно скриптовать?
Вот есть SSH_ASKPASS, да? Но она используется ТОЛЬКО если нет связанного терминала И переменная DISPLAY непустая И стоит BatchMode=no (иначе парольная аутентификация вообще отключается).
- The option BatchMode specifies whether a username and password querying on connect will be disabled. This option is useful when you create scripts and dont want to supply the password.
Минимально необходимый набор, соответственно:
cmd = ['ssh', '-oPubkeyAuthentication=no', blablabla] # а то у некоторых серверов четыре попытки ключа и превед
# плеснуть по вкусу немного '-oStrictHostKeyChecking=no' и -F/dev/null
my_env = os.environ
my_env['SSH_ASKPASS'] = '/tmp/getpass'
my_env['DISPLAY'] = ':999' # guyz, SRSLY, WTF you need it for???
p = subprocess.Popen(cmd, env = my_env, preexec_fn=os.setsid)
Дальше выясняется что аскпасу отдают буквально строку "test@localhost's password:" и больше ничего. И как, скажите, это говно скриптовать?