ssh-агент, не будящий набор (SSH_AUTH_SOCK, ENV SSH_AGENT_PID Вар не набор)

lftp имеет a mirror команда (и mirror -R для обратного зеркала).

13
07.11.2017, 19:04
5 ответов

Вы упомянули, что ваш пользователь sshвходит в систему, а не локально. Таким образом, use-ssh-agentв /etc/X11/Xsession.optionsявляется отвлекающим маневром :, он не будет выполняться в сеансах SSH, только при локальном входе в рабочий стол с графическим интерфейсом X11 (или с использованием какого-либо виртуального сеанса X11, например, через VNC или RDP ).

Вместо этого вам следует проверить, установлен ли libpam-sshв любой системе. Его можно настроить для аутентификации пользователя с использованием секретных фраз-паролей SSH, но это необязательно, и вам нужно специально поместить ключ в ~/.ssh/login-keys.d/для этой функции.

Однако его другая функция заключается в автоматическом -запуске агента SSH при любом сеансе входа в систему и автоматическом добавлении закрытых ключей SSH к агенту, если их парольная фраза совпадает с паролем пользователя для входа. Я думаю, что это может быть причиной различного поведения между вашими системами.

1
27.01.2020, 19:53

Для

$ eval `ssh-agent -s`
Чтобы конструкция

работала в «сценарии запуска», ваш сеанс и, в конечном счете, терминал, в котором вы ожидаете среду, должны быть потомками (по forkиexec)этого сценария. Причина в том, что вывод ssh-agent -sпри оценке устанавливает среду переменные в оболочке, вызывающей eval. Сформировавшись там, они могут быть переданы по наследству, а также могут быть потеряны в пути.

Таким образом, если ssh-agentзапускается сценарием A где-то во время входа в систему, но терминал B, в котором вы запускаете сценарий оболочки, не является потомком A, то вы не можете видеть окружение в B.

Если вы запустили ssh-agentкак службу systemd --user, тогда вам, возможно, придется использовать вместо этого соглашение :Не позволяйте ssh-agentуказать переменные, но использовать общие знания при запуске агента и при запуске сеанса. например, мой ~/.config/systemd/user/ssh-agent.serviceвыглядит так:

[Unit]
Description=SSH agent

[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK

[Install]
WantedBy=default.target

А в моем ~/.profileу меня есть строчка

export SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket"

Обратите внимание, что %tв первом соответствует ${XDG_RUNTIME_DIR}в последний.

Примечание:Я не в восторге от этого!

5
27.01.2020, 19:53

Я нашел ответ здесь:

http://www.bernatchez.net/userauth.html

В Ubuntu утилите ssh -add не удается загрузить файлы сертификатов. Это происходит, когда агент реализуется связкой ключей gnome -. Исправление состоит в том, чтобы прекратить использование ssh-компонента набора ключей gnome -. Поскольку процесс инициализации фактически запускает настоящий агент ssh -, а затем запускает связку ключей gnome --ssh.desktop, которая стирает AUTH _SOCKET, чтобы взять его на себя, мы можем вернуться к исходному ssh -. ] агент, отключив gnome -связку ключей -ssh.desktop.

Отключить gnome -keyring -ssh.desktop:

cd /etc/xdg/autostart/
sudo emacs gnome-keyring-ssh.desktop

Добавьте следующую строку в файл рабочего стола и сохраните его, затем перезагрузите:

X-GNOME-Autostart-enabled=false
2
27.01.2020, 19:53

Вы упомянули, что

$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/some_id_rsa

работает как надо. Так что вам просто нужно, чтобы они выполнялись в нужное время, в профиле.bash _или.xsession. Добавьте операторы отладки, такие как (date; env|sort) >> /tmp/log, чтобы помочь вам точно понять, когда они выполняются.

0
27.01.2020, 19:54

SSH -Keygen for Multi -User Jupyterhub Python Environment:

Попытка настроить SSH -Keygen в многопользовательской -среде Jupyter Python оказалась большим разочарованием... Это, конечно, явно предпочтительнее обычного текста http пароль для git.

Я не понимал, что SSH_AUTH_SOCKне переносится в мой ssh-addпосле запуска eval ssh-agentcmd... @stefan дал очень хорошее описание выше, которое поставило это все в перспективе! Более полезная информация о ssh -добавить справочную страницу здесь а также...


Вам нужно запустить все в одной командной строке bash!

Ниже приведен пример инструкций с GitHub здесь по генерации ключа ssh.

  • Обратите внимание, что я использую!(bang )в ячейке python, поэтому он запускает команду bash в jupyter. Подробнее здесь .
  • Также обратите внимание на && \, чтобы обернуть мою команду bash внутри ячейки блокнота jupyter python, чтобы это была ОДНА команда:
!ssh-keygen -t ed25519 -C "YOUR_EMAIL@domain.com" -f $HOME/.ssh/id_rsa -N "" <<< y && \
eval "$(ssh-agent -s)" && \
ssh-add $HOME/.ssh/id_rsa

Подтвердите настройку SSH

Продолжайте, добавив свой SSH-ключ на github. После этого вы сможете подтвердить свою аутентификацию на github , у меня это сработало при запуске следующего:

!ssh -o "StrictHostKeyChecking no" -T user@hostgit@github.com
  • Обратите внимание, что флаг -o "StrictHostKeyChecking no"является НЕ рекомендуемым, поскольку в -средней атаке -может быть человек -. Я не уверен, как программно принять это со значением да , в качестве альтернативы вы, вероятно, можете получить известный хост и вручную добавить его в файл известного хоста.
1
01.04.2021, 17:11

Теги

Похожие вопросы