ssh_config: oturum açtıktan sonra uzak makinede yürütülecek komutu belirtin


16

Bu benim önceki sorumun bir uzantısı . Ben ssh oturum açma üzerine bir uzak makinede yerel olarak saklanan bir komut (yani mount /home) çalıştırmak gerekir . Şu anda kullanıyorum:

ssh -t mymachine.example.com 'mount /home ; /bin/bash'

Bu iyi çalışıyor, ama .ssh/configher seferinde yazmak zorunda kalmamak için bu komutu benim koyabilir miyim diye merak ediyordum . Bir LocalCommandseçenek buldum , ancak herhangi bir RemoteCommandseçenek göremiyorum .

command-to-be-executedŞifrelenmiş bir diski açmak için parola içereceğinden, yerel makinede saklanması önemlidir . Komutu .profileuzaktaki makineye koyamamın nedeni budur .

Yanıtlar:


6

Bu soru daha önce SuperUser'da sorulmuştur. İlk yanıt, gereksinimlerinize uymayan uzak bir dosya kullanır, ancak yerel bir takma ad kullanmanızı öneren ikinci yanıt, sorunun çözümü olabilir.

Yürütülecek komutun yerel makinede saklanması önemlidir, çünkü şifreli bir diski açmak için parola içerecektir. Komutu, uzak makinedeki .profile dosyasına yerleştiremememin nedeni budur.

Bu muhtemelen güvenli değil. Bir echokomutu ssh komutu olarak kullanırsam ps, uzak sunucuda görünür:

martin@martin ~ % ssh dev2 "echo hello; ps aux|grep echo"

hello
root     25358  0.0  0.0   5848  1296 ?        Ss   11:27   0:00 bash -c echo hello; ps aux|grep echo
root     25362  0.0  0.0   5012   828 ?        S    11:27   0:00 grep echo

teşekkürler, ancak SuperUser çözümünde ~/.ssh/rcuzak makinede tekrar saklanır. psKomut satırı parametrelerimi (şifre dahil) gösterme hakkındaki yorumunuzla ilgili olarak , bu beni rahatsız etmiyor. Güvenmediğim uzak makinedir. Yerel makinem yalnızca kendim tarafından kullanıldığından, başka hiç kimsenin erişimi yok ps.
Martin Vegter

6
Bu psçıkış olan uzak makineden. Mesele şu: sshUzak komut olarak sağladığınız her şey uzak sunucuda görünecektir ps.
Martin von Wittich

1
Evet haklısın. Bunu işaret ettiğiniz için teşekkürler.
Martin Vegter

1
@MartinvonWittich - Her bir SE sitesi bağımsızdır, bu nedenle her bir sitenin söz konusu sitenin konusuyla ilgili oldukları sürece benzer Q ve A'ya sahip olması tamamen kabul edilebilir. Bir Q gelir ve A başka bir SE sitesinde bulunuyorsa içeriği kopyalamanız önerilir. Konuya göre uygun şekilde özelleştirin.
slm

7

Bu, OpenSSH 7.6'da eklenmiştir:

ssh config dosyasında istemcinin komut satırında vermek yerine bir komut belirtmek için RemoteCommand seçeneğini ekleyin. Bu, yapılandırma dosyasının uzak ana bilgisayarda yürütülecek komutu belirtmesine olanak tanır.

ref: https://www.openssh.com/txt/release-7.6


6
RequestTTY yes
RemoteCommand screen -UDr

harika!! Teşekkürler!!
shrish

2

Bunu, uzak makinenin işbirliği ile aşağıdaki gibi yapabilirsiniz.

Yerel makinenizde, ortam değişkeninde çalıştırılacak komutu doldurun LC_SSH_INITIAL_COMMAND. SSH genellikle formun tüm ortam değişkenlerini geçirecek şekilde yapılandırılır LC_*, çünkü bunlar normalde yerel ayarlardır.

Uzak makinede, eval "$LC_SSH_INITIAL_COMMAND" içindeki~/.ssh/authorized_keys veya ~/.ssh/rccihazdaki anahtar başına ayarları kullanarak çalıştırın (~/.ssh/rc dosyanız varsa, xauthX11 iletimi için manuel olarak çalıştırmanız gerektiğine dikkat edin ).

İle authorized_keys (; hatta bağlantı ölür eğer HUP sinyali böylece en az tuzak adresinden komut yürütülür gerektiğini kabuk süreci aniden ölür sürece) yöntemiyle, sen benzer SSH oturumu çıkışlar bir komut çalıştırabilirsiniz.

Ancak bu, bir dosya sistemi kurmak gibi küresel bir şey yapmak için iyi bir düzenleme değildir . Dosya sistemi zaten monte edilmişse (örneğin, eşzamanlı olarak çalışan bir SSH komutu nedeniyle) tekrar takmamaya ve çıkışta bağlantısını kesmemeye dikkat etmeniz gerekir. Bu kullanım durumu için tavsiyem hala montajı açık bir şekilde yapmak, daha sonra özel bir şey yapmadan uzak komutları çalıştırmak ve artık dosya sistemine erişmek istemediğinizde bağlantısını kesmek.


0

Denemedim ama bir yaklaşım olabilir

  • SubsystemUzaktan kumandada a bildirimisshd_config bazı env vars okuyarak istediğiniz komutu çalıştırır
  • Bu anahtarları uzak sunucuya geçirmek SendEnviçin yerelde kullanın.ssh/config
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.