2010-12-10 16 views
30

Birkaç farklı sunucuyla çalışıyorum ve bazı ortam değişkenlerini SSH içerideyken hepsinde etkin olacak şekilde ayarlayabilmek yararlı olacaktır. Sorun şu ki, bazı değişkenlerin içeriği hassas bilgiler içeriyor (hashed parolalar) ve bu yüzden bir .bashrc dosyasında uzanmak istemiyorum - sadece hafızada tutmak istiyorum.Env değişkenlerini ssh üzerinden iletebilir miyim?

SSH'yi DISPLAY değişkenini (ForwardX11 aracılığıyla) veya bir SSH Agent işlemini (ForwardAgent aracılığıyla) iletmek için kullanabileceğinizi biliyorum, bu yüzden SSH'de rastgele ortam değişkenlerinin içeriğini otomatik olarak iletmenin bir yolu olup olmadığını merak ediyorum bağlantıları. İdeal olarak, .ssh/config dosyasında ayarlayabileceğim bir şey, böylece ihtiyacım olduğunda otomatik olarak çalışacaktı. Herhangi bir fikir?

cevap

22

Bunu yapabilirsiniz, ancak sunucu yapılandırmasını değiştirmek gerekir.

ssh_config(5) numaralı telefona sshd_config(5) ve SendEnv adreslerindeki AcceptEnv girişlerini okuyun.

güncelleme:

ssh [email protected] "FOO=foo BAR=bar doz" 

uzak makineye erişimi olan herkesten daha güvenlik, not aktarılan ortam değişkenleri görmek mümkün olacak ilgili olarak:

Ayrıca onları komut satırında geçebilir herhangi bir koşu sürecine. Eğer bu bilgi gizli tutmak istiyorsanız

o stdin içinden geçmek daha iyidir:

cat secret_info | ssh [email protected] remote_program 
+1

Konfigürasyon dosyalarını yeniden okumak için sshd'yi yeniden başlatmam gerektiğini hatırlatan bir süre önce biraz zaman aldı, ama bunu yaptıktan sonra AcceptEnv ve SendEnv bir çekicilik gibi çalıştı. Tam olarak aradığım şey! Teşekkürler! – singingwolfboy

11

Sen (bu kadar uzak programlar aslında ekrana bağlayarak bunu Xauth bilgileri ile birlikte -X ile iletebilir hangi $DISPLAY hariç) otomatik olarak bunu yapamaz ancak bir "Burada belgenin" bir senaryo kullanabilirsiniz:

ssh ... <<EOF 
export FOO="$FOO" BAR="$BAR" PATH="\$HOME/bin:\$PATH" 
runRemoteCommand 
EOF 

İstenmeyen değişkenler yerel olarak genişletilecek ve sonuç uzak tarafa iletilecektir. Yani PATH, $HOME'un uzaktan değeri ile ayarlanacaktır.

+0

'çıkış kullanılmayan değişkenler genişletilecek locally' parçası Günümü kurtardı. Bu diğer kılavuzlarda açıklanmadı. Teşekkür ederim! – Kolyunya