ssh-agent를 시스템 서비스로 시작하고 사용하는 방법은 무엇입니까?


15
  1. 어떻게 시작 ssh를 에이전트systemd 서비스를? 인터넷에 몇 가지 제안이 있지만 완료되지 않았습니다.

  2. ssh-agent 서비스가 성공적으로 시작된 경우 자동으로 암호화되지 않은 키를 추가하는 방법 은 무엇입니까? 아마도 목록에서 키를 추가하는 ~/.ssh/.session-keys것이 좋습니다.

  3. SSH_AUTH_SOCK나중에 로그인 세션에서 설정하는 방법은 무엇입니까? 가장 올바른 방법은 ssh-agent 서비스에서 systemd-logind 서비스 로 푸시하는 것입니다 ( 가능한지 전혀 모름 ). 순진한 방법은에 추가하는 것 /etc/profile입니다.


인터넷의 제안에서 무엇이 빠졌습니까?
Mark Stosberg

답변:


25

시스템화 된 ssh-agent 서비스를 작성하려면 ~/.config/systemd/user/ssh-agent.servicessh-agent가 사용자 분리이므로 파일을 작성해야합니다 .

[Unit]
Description=SSH key 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

추가 SSH_AUTH_SOCK DEFAULT="${XDG_RUNTIME_DIR}/ssh-agent.socket"~/.pam_environment.

마지막으로이 서비스를 활성화하고 시작하십시오.

systemctl --user enable ssh-agent
systemctl --user start ssh-agent

그리고 7.2보다 높은 ssh 버전을 사용하는 경우. echo 'AddKeysToAgent yes' >> ~/.ssh/config

이렇게하면 ssh 클라이언트가 항상 실행중인 에이전트에 키를 추가하도록 지시하므로 미리 ssh-add 할 필요가 없습니다.

~/.ssh/config파일 을 만들 때 다음 을 실행해야 할 수도 있습니다.

chmod 600 ~/.ssh/config 또는 chown $USER ~/.ssh/config

그렇지 않으면 Bad owner or permissions on ~/.ssh/config오류 가 발생할 수 있습니다 .


launchdOS X에서 Unix 소켓에 액세스 할 때 ssh-agent를 시작하도록 설정되어 있고 SSH_AUTH_SOCK변수는 경로로 미리 채워져 있습니다 (예 inetd: Unix 소켓). 이것도 가능해 보입니다 systemd. (시스템 전체 서비스가 사용자 별 서비스에 대한 옵션이 있는지 여부 .... 보는 것도 흥미로울 수)
게르트 반 베르그 덴

나는 centos7에서 Failed to execute operation: Process org.freedesktop.systemd1 exited with status 1실행하면 얻을systemctl --user enable ssh-agent
scarba05

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.