LINUX.ORG.RU

Использование ключа ssh в VS Code с хранением приватного ключа на аппаратном хранилище

 , , ,


0

2

В общем не нашёл рабочего способа в сети.

Если делать git clone через консоль, нужно сначала выполнить

onlykey-agent ~/.ssh/github.pub -v --shell

После этого если делать какую либо команду будет обращение к физическому устройству

Как это объяснить VS Code я не понял.

Может что-то можно добавить в ~/.ssh/config.conf?

Ответ на: комментарий от unclestephen

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

Соответственно, если команда onlykey-agent запускает шелл, в котором всё работает, то это потому что в нём уже есть эта переменная окружения.

А если хочется вскод запускать отдельно от этого шелла, то нужно как-то сообщить ему где искать файл-соккет. Например, можно как-то запустить onlykey-agent так, чтобы он создавал файл-соккет в заранее известном месте, и это же место указать вскоду.

kaldeon
()
Ответ на: комментарий от kaldeon

Да, SSH_AUTH_SOCK

> onlykey-agent ~/.ssh/github.pub -v --shell
2025-02-28 10:01:45,280 INFO         identity #0: <ssh://git@github.org|ed25519>                                      [__init__.py:287]
2025-02-28 10:01:45,289 INFO         running '/bin/bash' with {'SSH_AUTH_SOCK': '/tmp/trezor-ssh-agent-rdivcnv7', 'SSH_AGENT_PID': '33373'} [server.py:156]

А если хочется вскод запускать отдельно от этого шелла, то нужно как-то сообщить ему где искать файл-соккет.

кстати, любой кто будет иметь доступ к файлу сокета сможет с ним работать, правильно?

то есть желательно как бы не пробрасывать этот выхлоп в общее окружение?

unclestephen
() автор топика
Ответ на: комментарий от unclestephen

кстати, любой кто будет иметь доступ к файлу сокета сможет с ним работать, правильно?

Да

то есть желательно как бы не пробрасывать этот выхлоп в общее окружение?

Если доверяешь своему пользователю, то достаточно поставить права 0700.

kaldeon
()
Ответ на: комментарий от kaldeon
onlykey-agent user@gitlab.com -- git clone ssh://git@gitlab.com/user/project.git /some/path/project --progress

вот как это делать в 1 команду, как бы объяснить vscode что ей надо делать так?

она делает только

git clone ssh://git@gitlab.com/user/project.git /some/path/project --progress
unclestephen
() автор топика
Последнее исправление: unclestephen (всего исправлений: 1)
Ответ на: комментарий от unclestephen

Я, честно говоря, не понимаю почему onlykey-agent даёт возможность только запустить дочерний процесс. Обычный ssh-agent можно запускать как угодно (в том числе упомянутым образом), главное что через него можно знать путь к соккету. Поэтому в случае с ssh-agent есть разные решения.

Но вообще, почему бы не сделать

onlykey-agent user@gitlab.com -- vscode

?

Обычный ssh-agent так можно использовать.

kaldeon
()
Ответ на: комментарий от unclestephen

как бы объяснить vscode что ей надо делать так?

Ну, если критично запускать onlykey-agent на каждый вызов команды (хотя я не знаю почему это критично), то никак. В отдельном терминале можно это делать, а в васькоде уже код писать.

kaldeon
()
Ответ на: комментарий от kaldeon

почему то такое

onlykey-agent identity@myhost -- code

срабатывает для консольных утилит, но не сработало для vs code

дело в том что ключик не отдаёт ничего наружу и каждый раз просит подтверждение присутствия

видимо поэтому и не работает

unclestephen
() автор топика
Последнее исправление: unclestephen (всего исправлений: 1)
Ответ на: комментарий от kaldeon

В отдельном терминале можно это делать, а в васькоде уже код писать.

обращение к удалённому репу делаю в отдельном терминале, да, пока так, а локальные коммиты в васькоде

unclestephen
() автор топика