Nếu bạn chỉ cần để dịch vụ hoạt động trong khi bạn đăng nhập, hãy kết nối với dịch vụ ssh-agentmà bạn bắt đầu với phiên của mình. Cách dễ nhất để làm điều này là sử dụng một đường dẫn cố định cho ổ cắm tác nhân. Đặt SSH_AUTH_SOCKbiến môi trường thành một cái gì đó giống như /home/romeovs/.ssh/darkstar.agent.socketcả trong công việc systemd và trong của bạn .profile. Lưu ý rằng nếu bản phân phối của bạn bắt đầu một ssh-agentquy trình cho bạn, bạn có thể cần phải giết nó hoặc để nó không được sử dụng và thay thế nó bằng chính bản phân phối của bạn. Nếu SSH_AUTH_SOCKbiến có trong môi trường, ssh-agentsử dụng đường dẫn chứa trong ổ cắm của nó. Sau đó, khi bạn đăng nhập, hãy chạy ssh-addtrên khóa riêng của bạn và công việc sẽ có thể sử dụng nó.
Nếu bạn cần phải hoàn thành công việc mọi lúc, tôi khuyên bạn nên tạo một khóa mật khẩu cụ thể cho mục đích đó ( ssh-keygen -t rsa -f ~/.ssh/smd.id_rsa -N '') và chỉ cho phép nó chạy một lệnh cụ thể trên máy chủ bằng cách sử dụng một command=và các from=hạn chế trong ~/.ssh/authorized_keystệp trên máy chủ. Các from=tùy chọn phương tiện rằng chìa khóa chỉ có giá trị cho những nỗ lực đăng nhập từ một host cụ thể và command=xác định một lệnh sẽ được thực thi thay vì lệnh theo quy định của khách hàng.
ssh-rsa AAAA…== romeovs@darkstar no-agent-forwarding no-port-forwarding no-x11-forwarding from="romeovs@darkstar.example.com" command="somecommand --foo"
Lệnh được thực thi bởi shell đăng nhập của bạn. Nếu bạn cần truyền tham số cho lệnh đó, bạn có hai lựa chọn:
- Lệnh ban đầu được cố gắng bởi máy khách nằm trong
SSH_ORIGINAL_COMMANDbiến môi trường. Coi chừng trích dẫn các vấn đề nếu bạn cố gắng phân tích nó.
- Một vài biến môi trường được thông qua bởi khách hàng. Bộ chính xác phụ thuộc vào cấu hình máy chủ (
AcceptEnvchỉ thị trong sshd_configtệp).