Skip to main content

Конференции

Просмотр конференции fido7.ru.linux:

Предыдущее Следующее

Дата: 08 Jun 2019, 21:59:36
От: Sergey Zabolotny @ 2:469/122.2
Кому: Eugene Grosbein
Тема: SSH_AUTH_SOCK


 Hello *Eugene.*

Friday 07 June 2019 02:30, Eugene Grosbein wrote to Sergey Zabolotny:

 SZ>> подключаюсь к серверу по ссх с включенным ForwardAgent, локальные
 SZ>> ключи на сервер прокидываются и все работает. не устраивает
 SZ>> только то, что сокет создается в
 SZ>> $TMPDIR/ssh-XXXXXXXXXX/agent.<ppid>. хочу, чтоб он лежал,
 SZ>> например, где-то тут $TMPDIR/SSH_AUTH_SOCK/agent.<ppid>. как
 SZ>> такое можно сделать не трогая клиентскую сторону? в интернетах
 SZ>> пишут, что это прям боль и ничего не получится. но вдруг есть
 SZ>> какие-то обходные пути?

 EG> Hо зачем? Это, вообще говоря, плохое и глупое требование,
есть система в которую могут логиниться множество разных пользователей. у каждого есть свои ссх ключи. пользователь после логина стартует некий скрипт который поднимает набор докер контейнеров, в
один из которых нужно прокинуть пользовательские ключи.
пакет докер контейнеров поднимается при помощи docker-composer, конфиг которого изменять нельзя. кроме того, если клиент пришел с отключеным агентом (SSH_AUTH_SOCK не засечена) внутрь вышеупомянутого
контейнера должен быть прокинут дефолтный ключ, который лежит в соседнем контейнере и подключается так:

 volumes:
   - default_ssh_key:/.ssh-agent:ro

идея, как советуют в интернетах, прокинуть сокет внутрь контейнера используя:
docker run -v ${SSH_AUTH_SOCK}:${SSH_AUTH_SOCK} -e SSH_AUTH_SOCK="${SSH_AUTH_SOCK}"
не подходит т.к., если в конфиг docker-composer написать что-то типа:

 volumes:
   - default_ssh_key:/.ssh-agent:ro
   - ${SSH_AUTH_SOCK}:${SSH_AUTH_SOCK}:ro
 environment:
   - SSH_AUTH_SOCK

и клиент придет с отключеным ссх-агентом мы получим ошибку при попытке поднять этот контейнер.
поэтому я подумал, что можно было бы прокинуть всю директорию (весь $TMPDIR не вариант) с сокетами внутрь контейнера используя:

 volumes:
   - default_ssh_key:/.ssh-agent:ro
   - $TMPDIR/SSH_AUTH_SOCK:$TMPDIR/SSH_AUTH_SOCK:ro
 environment:
   - SSH_AUTH_SOCK

в таком случае, если клиент придет со своими ключами переменная SSH_AUTH_SOCK будет переопределена и клиентские ключи будут видны в контейнере. в противном случае будет использовано дефолтное
значение SSH_AUTH_SOCK, которое смотрит на дефолтный ключ.

 EG> потому что ниоткуда не следует, что по этому пути уже нет файла,
 EG> который мог остаться с прошлого ребута или по любой другой причине.
так же как и нет гарантии, что с прошлого ребута мог остаться файл $TMPDIR/ssh-XXXXXXXXXX/agent.<ppid>

 EG> И тогда выйдет обломчикус. То есть ты предлагаешь заменить
 EG> надежную схему на ненадежную.
другого, более правильного способа я не придумал, к сожалению.


--- GoldED+ 1.1.5-031023 (WinNT 5.1.2600-Service_Pack_3 i1586)
Origin: [icq:122018120] [mailto:zabolotny[at]hotbox.ru] (2:469/122.2)

Предыдущее Следующее

К списку сообщений
К списку конференций