Bu uzun zamandır yaşadığım bir sorun, ama her zaman bir şey bulmaya çalıştığımda kayboluyorum, bu yüzden burada daha deneyimli birinin bana nasıl yardımcı olabileceğini sorsam iyi olur.
Arka fon
Raspberry Pi'm Raspbian Jessie çalıştırıyor ve SSH'yi sık sık oturum açmak ve komutları uzaktan çalıştırmak için kullanıyorum. İlk SSH oturumlarım sırasında , RPi'de her giriş yaptığımda bir ssh-agentişlemin ortaya çıktığını fark ettim , ancak ing: asla birkaç kez giriş ve çıkış yapmak, bir sürü işlemin orada hiçbir şey yapmadan asılı bırakılmasına neden oldu . Etrafta dolaşıp adam sayfalarını ve cevaplarını burada ve orada okudum ve son zamanlarda amacını anladım ve ayrıca çıkış yaparken normalde öldürülmesi gerektiğini öğrendim, bu yüzden kendime neden olmadığını sormaya başladım. Ayrıca, ihraç etmenin başka bir örneğinin ortaya çıkmasına neden olduğunu fark ettim . Göreceli adam sayfasında okudumexitssh-agentssh-agentsource ~/.bashrcssh-agentortam değişkeninin SSH_AGENT_PIDtanımlanması gerekir, çünkü ssh-agentprogram evalçıktısını yürütmek ve daha sonra ssh-agent -k(mevcut oturuma göre aracıyı öldürmek için) dahil olmak üzere diğer SSH ile ilgili komutlar tarafından kullanılan bu değişkenleri tanımlamak için bir içinde başlatılmalıdır. ran echo $SSH_AGENT_PIDve echo $SSH_AUTH_SOCKfakat ikisi de boştu. Aniden fark ettim: Muhtemelen süreç çıkışta öldürülmüyor çünkü ssh-agent -kPID'sini ayarlanmamış ortam değişkeninden okumaya çalışıyor.
Sorun
Yana ssh-agentçıkış yapınca öldürüldü ve herhalde bu gerekli ortam değişkenleri ayarlanmadığı için, sadece ortalama bir şey olabilir olmuyor değil: çağrıları kim ssh-agentgirişte muhtemelen (olurdu düzgün bir şekilde bunu yapmaz eval "$(ssh-agent -s)") . Ben de düşündüm: sorun ne? Sadece aracıyı başlatmak ve el ile düzeltmek için hangi yapılandırma dosyası, hizmet veya giriş komut dosyası çalıştırılırsa bulacağım! Nerede olabilir?
Ne denedim
ssh-agentHer aradığımda bir yumurtlandığını fark ettiğimden source ~/.bashrc, bu ilk denetlediğim dosyaydı, ama orada hiçbir şey uzaktan SSH ile ilgili bir şeye bile atıfta bulunmadı. Aşağıdaki dosyaların içindeki dizeyi kullanarak arama viyapmaya devam ettim ssh, ancak hiçbir şey bulamadım :
~/.bashrc
~/.profile
/etc/bash.bashrc
/etc/profile
/etc/profile.d/ (every file in this folder)
/etc/environment
Dahil olabilecek başka bir dosya var source ~/.bashrcmı? Gerçekten bilmiyorum.
Sonra ben alakalı aradı systemdhizmetler , ama sadece bulundu ssh.serviceki, WantedBy=multi-user.target(bu SSH sunucusu servistir beri aşikar olduğunu, iyi ve) ve bu nedenle giriş koşmak değildir.
Ben de benim her bir dosya hareketli çalıştı /home/pigeçici bir klasöre klasörün ve çıkış yaptıktan ve tekrar tekrar, ama ssh-agentyine de daha çıktı.
Sonunda, ben de odada son atış ateş: Ben find / -name 'ssh-agent'sadece yazdırılan /usr/bin/ssh-agent, bir yürütülebilir, kök olarak koştu , bu yüzden temelde sadece ana komut günlüğe sahte bir yürütülebilir dosya oluşturdum :
#! /bin/bash
ps -o args= $PPID > /home/pi/LOG
cat /proc/$PPID/cmdline >> /home/pi/LOG
Gerçek adını /usr/bin/ssh-agentdeğiştirdim ve doğru izinleri / kullanıcı / grubu ayarlayan sahte biriyle değiştirdim, source ~/.bashrctekrar koştum , sonra LOGdosyayı yazdırdım :
-bash
-bash
Neler olduğuna dair tek bir ipucu değil.
Bazı ayrıntılar
Daha fazla ayrıntı ekliyorum, yararlı olup olmadıklarını bilmiyorum, ama biliyorsunuz ... üzgünümden daha güvenli.
İşte benim
.bashrc.dummyUsing adlı yeni bir kullanıcı oluşturdumuseradd -m dummyve giriş yapmak hiç başlamıyorssh-agent(bunun bir şey ifade edebileceğini düşünüyorum).diff /home/pi/.bashrc /home/dummy/.bashrcAynı gösterileri temelde hiçbir şey (yaptığım sadece bir yorum)diff /home/pi/.profile /home/dummy/.profile.Aracı soketi
SSH_AUTH_SOCKayarlanmamış olsa bile sorunsuz bir şekilde oluşturulur :pi:~$ ls -lAh /tmp/ssh-vQRTAyj7DJry/ total 0 srw------- 1 pi pi 0 Jan 28 03:12 agent.1328Neden olduğundan emin değilsiniz, ancak soket dosya adındaki sayı her zaman
ssh-agentişlemin PID'sinden hemen önceki sayıdır .Snippet
htop:PID USER PRI NI VIRT RES SHR S Command 1 root 20 0 5472 3900 2728 S /sbin/init 1329 pi 20 0 3696 224 16 S └─ ssh-agent -sYüklü paketler eşleşiyor
ssh:pi:~$ apt list --installed | grep ssh libpam-chksshpwd/oldstable,now 1.1.8-3.1+deb8u2+rpi3 armhf [installed] libssh-gcrypt-4/oldstable,now 0.6.3-4+deb8u2 armhf [installed,automatic] libssh2-1/oldstable,now 1.4.3-4.1+deb8u1 armhf [installed,automatic] openssh-client/oldstable,now 1:6.7p1-5+deb8u4 armhf [installed,automatic] openssh-server/oldstable,now 1:6.7p1-5+deb8u4 armhf [installed,automatic] openssh-sftp-server/oldstable,now 1:6.7p1-5+deb8u4 armhf [installed,automatic] ssh/oldstable,now 1:6.7p1-5+deb8u4 all [installed] sshpass/oldstable,now 1.05-1 armhf [installed]Aranıyor
ssh-agent -syinelemeli kullanarakgrepiçinde/etcve/libhiçbir sonuç verimleri.Yüklü masaüstü ortamım yok, ancak
/etc/X11içinde bazı yapılandırma dosyaları olan bir klasör var. Klasörü başka bir şeye yeniden adlandırmayı ve her durumda yeniden başlatmayı denedim, ancak süreç hala ortaya çıkıyor, bu yüzden görünüşe göre bununla çok fazla bir ilgisi yok.
Sonuç
Şimdi, mümkün olduğunca basitleştirmek için, sadece iki sorum var:
- Bu nerede ve nasıl
ssh-agentortaya çıkıyor, emri kim veriyor? - Neden gerekli ortam değişkenlerini ayarlamadan ve bu nedenle süreci süresiz olarak orada bekletmeye bırakmadan doğru şekilde çağrılmıyor?
~/.bashrc.