ssh-agent kurulmuyor (SSH_AUTH_SOCK, SSH_AGENT_PID env vars ayarlanmadı)


13

Kubuntu 12.04'te bir arkadaşım için yeni bir kullanıcı hesabı oluşturdum. Kullandığı zaman sshbu hatayı alır:

Kimlik doğrulama aracınızla bağlantı açılamadı

Biz koşuyoruz sshbazı kabuk komut.

Bu hataya yol açabilecek çok çeşitli şeylere baktıktan sonra bu çözüme rastladım:

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

Sonra sshkomutları (ve bash betiklerini) beklendiği gibi çalıştırabilir .

Bu iki komutu çalıştırmadan önce, env değişkenleri terminalde ayarlanmaz:

$ echo $SSH_AGENT_PID

$ echo $SSH_AUTH_SOCK

$ 

Komutları çalıştırdıktan sonra, env değişkenleri beklendiği gibi ayarlanır. Bununla birlikte, sette kalmazlar (örneğin, farklı bir kabukta veya yeniden başlattıktan sonra).

Env değişkenlerini ayarlamak için bu iki komutu çalıştırmak zorunda kalmaması için bilgisayarını nasıl kuracağımı bilmek istiyorum. Onları bilgisayarımda çalıştırmam gerekmiyor. Şimdiye kadar makinelerimiz arasında neyin farklı olduğunu görmüyorum.

Bu bilgiyi man sayfasında görüyorum, ancak Ubuntu'nun normalde ajanı nasıl otomatik olarak ayarladığını veya arkadaşımın makinesinde ne olduğunu anlatmıyor, bu yüzden onun için çalışmıyor.

Bir aracıyı kurmanın iki ana yolu vardır: Birincisi, aracının bazı ortam değişkenlerinin dışa aktarıldığı yeni bir alt komut başlatmasıdır, örn. Ssh-agent xterm &. İkincisi, ajanın çağıran kabukta geliştirilebilen gerekli kabuk komutlarını (sh (1) veya csh (1) sözdizimi oluşturulabilir) yazdırmasıdır, örneğin ssh-agent -ssh (1) gibi Bourne tipi kabuklar için eval veya ksh (1) ve ssh-agent -ccsh (1) ve türevleri için değerlendirme yapın.

Kurduktan acctve yeniden başlattıktan sonra , bu çıktı 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

Man sayfasından:

F - komut çataldan sonra yürütüldü ancak aşağıdaki yürütme olmadan

Bunun önemli olup olmadığından emin değilim.


2
Ubuntu altında ssh-agentnormalde başlar /etc/X11/Xsession.d/90x11-common_ssh-agent. Bu kaldırarak baskı altına alınabilir use-ssh-agentdan /etc/X11/Xsession. Bu dosyalar doğru mu? Temsilci başlatıldı, sonra öldürüldü veya hiç başlamadı mı? ( Hangi programların lauch edildiğini görmek için giriş yaptıktan sonra yükleyin acctve çalıştırın lastcomm.)
Gilles 'SO- kötü olmayı durdurun'

@ Gilles-teşekkür ederim. Bu iki dosya makinemde ve makinesinde aynı. İkimiz de var X11/Xsession.options:use-ssh-agentve X11/Xsession.d/90x11-common_ssh-agent:SSHAGENT=/usr/bin/ssh-agent. Ben deneyeceğim acctve lastcommsonraki. Teşekkürler
MountainX

güncellenmiş soru
MountainX

hala bir çözüm arıyor ...
MountainX

Lütfen sürecini lastcommdeğil, tam oturumu için çıktısını gönderin ssh-agent. Mesele, çeşitli programların hangi sırada başlatıldığını görmektir.
Gilles 'SO- kötü olmayı kes'

Yanıtlar:


0

Kullanıcının sshyerel olarak oturum açmadığını, giriş yaptığını belirtmiştiniz . Yani use-ssh-agentin /etc/X11/Xsession.optionskırmızı bir ringa balığı: SSH oturumlarında, yalnızca yerel olarak bir X11 GUI masaüstüne giriş yaparken (veya VNC veya RDP gibi bazı sanal X11 oturumları kullanılırken) yürütülmez.

Bunun yerine, libpam-sshher iki sistemde de yüklü olup olmadığını kontrol etmelisiniz . SSH özel anahtar parolalarını kullanarak bir kullanıcının kimliğini doğrulamak için yapılandırılabilir, ancak bu isteğe bağlıdır ve ~/.ssh/login-keys.d/bu işlevsellik için anahtarı özellikle yerleştirmeniz gerekir .

Diğer özelliği ise, herhangi bir giriş oturumunda bir SSH aracısını otomatik olarak başlatmak ve parolası kullanıcının giriş şifresi ile aynıysa aracıya otomatik olarak SSH özel anahtarları eklemektir. Bunun sistemleriniz arasındaki farklı davranışların nedeni olabileceğini düşünüyorum.


3

İçin

$ eval `ssh-agent -s`

işe yapı sonuçta “başlatma komut”, Oturumunuzda ve size ortam bekliyoruz terminali koyduğumuzda, (tarafından soyundan olmalı forkve execbu senaryonun). Bunun nedeni, ssh-agent -sdeğerlendirildiğinde, kabuk çağrısındaeval ortam değişkenlerini ayarlamasıdır . Orada oluşturulduklarında teslim edilebilirler ve yolda da kaybolabilirler.

Bu nedenle ssh-agent, oturum açma sırasında bir yerde komut dosyası A tarafından çalıştırılır, ancak kabuk komut dosyasını başlattığınız terminal B , A'nın torunu değilse, B'deki ortamı göremezsiniz.

Eğer var edersek ssh-agentolarak başlayan systemd --userDo izin vermeyin: hizmet, o zaman bunun yerine kongre kullanmak gerekebilir ssh-agent değişkenleri belirlemek, ancak oturum başlatırken ajan başlayan ve zaman ortak bilgi kullanır. Örneğin, şöyle ~/.config/systemd/user/ssh-agent.servicegörünüyor:

[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

Ve benim ~/.profileçizgim var

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

İlkinde ikincisine %tkarşılık geldiğine dikkat ${XDG_RUNTIME_DIR}edin.

Not: Bundan memnun değilim!


1

Cevabı burada buldum:

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

Ubuntu'da ssh-add yardımcı programı sertifika dosyalarını yükleyemiyor. Ajan gnome-keyring tarafından uygulanan ajan olduğunda ortaya çıkar. Çözüm, gnome-keyring'in ssh bileşenini kullanmayı bırakmaktır. Başlatma işlemi aslında gerçek bir ssh aracısı başlattığından ve gnome-keyring-ssh.desktop'u hangi AUTH_SOCKET'in devralması için başlattığından, gnome-keyring-ssh.desktop'u devre dışı bırakarak orijinal ssh aracısına geri dönebiliriz.

GNOME-keyring-ssh.desktop'u devre dışı bırak:

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

Aşağıdaki satırı masaüstü dosyasına ekleyin ve kaydedin, ardından yeniden başlatın:

X-GNOME-Autostart-enabled=false

0

Bundan bahsettin

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

istendiği gibi çalışır. Bu nedenle, bunların doğru zamanda, .bash_profile veya .xsession içinde yürütülmesi gerekir. (date; env|sort) >> /tmp/logTam olarak ne zaman çalıştıklarını anlamanıza yardımcı olmak için hata ayıklama ifadeleri ekleyin .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.