Saya mengatur akun pengguna baru untuk seorang teman di Kubuntu 12.04. Ketika dia menggunakan ssh
dia mendapat kesalahan ini:
Tidak dapat membuka koneksi ke agen otentikasi Anda
Kami menjalankan ssh
beberapa 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 ssh
perintah (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 -s
untuk shell tipe-Bourne seperti sh (1) atau ksh (1) dan evalssh-agent -c
untuk csh (1) dan turunannya.
Setelah menginstal acct
dan 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.
ssh-agent
biasanya dimulai dari/etc/X11/Xsession.d/90x11-common_ssh-agent
. Ini dapat ditekan dengan menghapususe-ssh-agent
dari/etc/X11/Xsession
. Apakah file-file itu benar? Apakah agen mulai dan kemudian dibunuh atau tidak pernah memulai? (Instalacct
dan jalankanlastcomm
setelah masuk untuk melihat program apa yang digeber.)X11/Xsession.options:use-ssh-agent
danX11/Xsession.d/90x11-common_ssh-agent:SSHAGENT=/usr/bin/ssh-agent
. Saya akan mencobaacct
danlastcomm
selanjutnya. Terima kasihlastcomm
untuk sesi penuh, bukan hanyassh-agent
prosesnya. Intinya adalah untuk melihat bagaimana urutan berbagai program dimulai.Jawaban:
Anda menyebutkan bahwa pengguna Anda
ssh
masuk, bukan masuk secara lokal. Jadiuse-ssh-agent
in/etc/X11/Xsession.options
adalah 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-ssh
sudah 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.
sumber
Untuk
membangun untuk bekerja ketika dimasukkan ke dalam "skrip startup", sesi Anda, dan akhirnya terminal di mana Anda mengharapkan lingkungan, harus keturunan (oleh
fork
danexec
) skrip itu. Alasannya adalah bahwa output darissh-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-agent
dijalankan 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-agent
memulai sebagaisystemd --user
layanan, maka Anda mungkin harus menggunakan konvensi: Jangan biarkanssh-agent
menentukan variabel, tetapi gunakan pengetahuan umum saat memulai agen, dan ketika memulai sesi. Misalnya,~/.config/systemd/user/ssh-agent.service
penampilan saya seperti ini:Dan di saya,
~/.profile
saya memiliki garisPerhatikan bahwa
%t
yang pertama berhubungan dengan${XDG_RUNTIME_DIR}
yang kedua.Catatan: Saya tidak senang dengan ini!
sumber
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:
Tambahkan baris berikut ke file desktop dan simpan, lalu reboot:
sumber
Anda menyebutkan itu
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/log
untuk membantu Anda memahami kapan mereka berjalan.sumber