ssh-agent tidak disiapkan (SSH_AUTH_SOCK, SSH_AGENT_PID env vars tidak disetel)


13

Saya mengatur akun pengguna baru untuk seorang teman di Kubuntu 12.04. Ketika dia menggunakan sshdia mendapat kesalahan ini:

Tidak dapat membuka koneksi ke agen otentikasi Anda

Kami menjalankan sshbeberapa skrip bash.

Setelah melihat-lihat berbagai hal yang dapat menyebabkan kesalahan itu, saya menemukan solusi ini:

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

Kemudian dia dapat menjalankan sshperintah (dan bash scripts) seperti yang diharapkan.

Sebelum menjalankan kedua perintah itu, variabel env tidak diatur di terminal:

$ echo $SSH_AGENT_PID

$ echo $SSH_AUTH_SOCK

$ 

Setelah menjalankan perintah, variabel env ditetapkan seperti yang diharapkan. Namun, mereka tidak tetap diatur (misalnya, dalam shell yang berbeda atau setelah reboot).

Saya ingin tahu cara mengatur komputernya sehingga ia tidak harus menjalankan kedua perintah itu untuk mengatur variabel env. Saya tidak perlu menjalankannya di komputer saya (pernah). Sejauh ini saya tidak melihat perbedaan antara mesin-mesin kami.

Saya melihat info ini di halaman manual, tetapi tidak memberi tahu saya bagaimana Ubuntu biasanya mengatur agen secara otomatis atau apa yang terjadi pada mesin teman saya sehingga ini tidak berfungsi untuknya.

Ada dua cara utama untuk menyiapkan agen: Yang pertama adalah bahwa agen memulai sub-perintah baru ke mana beberapa variabel lingkungan diekspor, misalnya ssh-agent xterm &. Yang kedua adalah bahwa agen mencetak perintah shell yang diperlukan (sintaks sh (1) atau csh (1) dapat dihasilkan) yang dapat di-evalled dalam shell panggilan, mis. Eval ssh-agent -suntuk shell tipe-Bourne seperti sh (1) atau ksh (1) dan eval ssh-agent -cuntuk csh (1) dan turunannya.

Setelah menginstal acctdan me-reboot, ini adalah output dari lastcomm:

ssh-agent         F    newuser __         0.12 secs Wed Aug  7 11:02
ssh-agent         F    newuser __         0.00 secs Wed Aug  7 20:34
ssh-agent         F    newuser __         0.02 secs Wed Aug  7 20:02
ssh-agent         F    newuser __         0.01 secs Thu Aug  8 12:39
ssh-agent         F    newuser __         0.02 secs Thu Aug  8 07:45

Dari halaman manual:

Perintah - F dieksekusi setelah garpu tetapi tanpa exec berikut

Saya tidak yakin apakah itu penting.


2
Di bawah Ubuntu, ssh-agentbiasanya dimulai dari /etc/X11/Xsession.d/90x11-common_ssh-agent. Ini dapat ditekan dengan menghapus use-ssh-agentdari /etc/X11/Xsession. Apakah file-file itu benar? Apakah agen mulai dan kemudian dibunuh atau tidak pernah memulai? (Instal acctdan jalankan lastcommsetelah masuk untuk melihat program apa yang digeber.)
Gilles 'SO- stop being evil'

@ Gilles-terima kasih. Kedua file itu identik pada mesin saya dan mesinnya. Kami berdua memiliki X11/Xsession.options:use-ssh-agentdan X11/Xsession.d/90x11-common_ssh-agent:SSHAGENT=/usr/bin/ssh-agent. Saya akan mencoba acctdan lastcommselanjutnya. Terima kasih
MountainX

pertanyaan diperbarui
MountainX

masih mencari solusi ...
MountainX

Silakan kirim output lastcommuntuk sesi penuh, bukan hanya ssh-agentprosesnya. Intinya adalah untuk melihat bagaimana urutan berbagai program dimulai.
Gilles 'SO- stop being evil'

Jawaban:


0

Anda menyebutkan bahwa pengguna Anda sshmasuk, bukan masuk secara lokal. Jadi use-ssh-agentin /etc/X11/Xsession.optionsadalah herring merah: itu tidak akan dieksekusi pada sesi SSH, hanya ketika masuk ke desktop GUI X11 secara lokal (atau menggunakan beberapa sesi X11 virtual seperti lebih dari VNC atau RDP).

Sebagai gantinya, Anda harus memeriksa apakah libpam-sshsudah diinstal pada kedua sistem. Ini dapat dikonfigurasi untuk mengautentikasi pengguna menggunakan frasa sandi kunci pribadi SSH, tetapi itu opsional dan Anda harus secara khusus menempatkan kunci ~/.ssh/login-keys.d/untuk fungsi tersebut.

Namun, fitur lainnya adalah untuk memulai agen SSH secara otomatis pada setiap sesi login dan secara otomatis menambahkan kunci pribadi SSH ke agen jika frasa sandi mereka sama dengan kata sandi login pengguna. Saya pikir ini mungkin penyebab perilaku yang berbeda antara sistem Anda.


3

Untuk

$ eval `ssh-agent -s`

membangun untuk bekerja ketika dimasukkan ke dalam "skrip startup", sesi Anda, dan akhirnya terminal di mana Anda mengharapkan lingkungan, harus keturunan (oleh forkdan exec) skrip itu. Alasannya adalah bahwa output dari ssh-agent -s, ketika dievaluasi, menetapkan variabel lingkungan dalam panggilan shelleval . Formulir di sana, mereka dapat diturunkan, dan mereka mungkin hilang di jalan juga.

Jadi jika ssh-agentdijalankan oleh skrip A di suatu tempat saat login, tetapi terminal B di mana Anda memulai skrip shell Anda bukan turunan A, maka Anda tidak dapat melihat lingkungan di B.

Jika Anda telah ssh-agentmemulai sebagai systemd --userlayanan, maka Anda mungkin harus menggunakan konvensi: Jangan biarkan ssh-agent menentukan variabel, tetapi gunakan pengetahuan umum saat memulai agen, dan ketika memulai sesi. Misalnya, ~/.config/systemd/user/ssh-agent.servicepenampilan saya seperti ini:

[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

Dan di saya, ~/.profilesaya memiliki garis

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

Perhatikan bahwa %tyang pertama berhubungan dengan ${XDG_RUNTIME_DIR}yang kedua.

Catatan: Saya tidak senang dengan ini!


1

Saya menemukan jawabannya di sini:

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

Di ubuntu utilitas ssh-add gagal memuat file sertifikat. Ini terjadi ketika agen yang diimplementasikan oleh gnome-keyring. Cara mengatasinya adalah berhenti menggunakan komponen ssh dari gnome-keyring. Karena proses inisialisasi sebenarnya memulai agen ssh sejati dan kemudian meluncurkan gnome-keyring-ssh.desktop yang melarang AUTH_SOCKET untuk mengambil alih, kita dapat kembali ke agen ssh asli dengan menonaktifkan gnome-keyring-ssh.desktop.

Nonaktifkan gnome-keyring-ssh.desktop:

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

Tambahkan baris berikut ke file desktop dan simpan, lalu reboot:

X-GNOME-Autostart-enabled=false

0

Anda menyebutkan itu

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

bekerja seperti yang diinginkan. Jadi, Anda hanya perlu menjalankannya pada waktu yang tepat, di .bash_profile atau .xsession. Tambahkan pernyataan debug seperti (date; env|sort) >> /tmp/loguntuk membantu Anda memahami kapan mereka berjalan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.