Ssh bağlantısından sonra komut dosyalarını sunucuda otomatik olarak çalıştır


11

istemci sistem sunucu ile ssh bağlantısı kurduktan hemen sonra sunucuda otomatik olarak bir komut dosyası çalıştırma

Örneğin: bir kullanıcının ssh bağlantısı kullanarak başka bir sistemden (lan ile bağlı) bilgisayarımda oturum açacağını varsayalım. O zaman, bir doğrulama (python veya kabuk) bazı doğrulama yapmak için sistemimde otomatik olarak çalıştırılmalıdır?

Komut dosyası sunucu sisteminde otomatik olarak nasıl çalıştırılır?


Yanıtlar:


14

Bunu, yapılandırma dosyanıza (/ etc / ssh / sshd_config) aşağıdaki parametreyi ekleyerek yapabilirsiniz.

 ForceCommand
         Forces the execution of the command specified by ForceCommand, ignoring any command supplied by the client and ~/.ssh/rc if present.  The command is invoked by using the user's login shell
         with the -c option.  This applies to shell, command, or subsystem execution.  It is most useful inside a Match block.  The command originally supplied by the client is available in the
         SSH_ORIGINAL_COMMAND environment variable.  Specifying a command of “internal-sftp” will force the use of an in-process sftp server that requires no support files when used with
         ChrootDirectory.

Diğer bir seçenek .ssh / rc dosyalarını kullanıcı bazında kullanmaktır.

ForceCommand yöntemini kullanmak için dosyanın ForceCommand /usr/bin/ownscriptaltına /etc/ssh/sshd_config(sunucuda) eklemeniz yeterlidir .

Komut dosyası şöyle görünür:

#!/bin/bash
#Script file for ssh
#
#put your commands here
echo "test" > /tmp/test.txt
#
#exit by calling a shell to open for the ssh session
/bin/bash

Senaryoyu chmod etmeyi unutmayın sudo chmod +x /usr/bin/ownscript


Cevap için teşekkürler. Lütfen örnek bir komut verebilir misiniz
Enthusiast

ancak force komutunun sunucuda (yönetici girişi) veya istemci girişinde komutu çalıştırıp yürütmeyeceği? Sunucu oturum açma komutunu yürütmek istiyorum
Enthusiast

1
Komut sunucuda verilir. Yapılandırma işleminizin altına ForceCommand /path/command.script eklemeniz yeterli olacaktır. Ancak, komut dosyası dosyasında bir kabuk başlatmanız için bu komutu yürütecek şekilde karşılaştım. Daha iyi okunabilirlik için orijinal cevabıma bir örnek ekleyeceğim.
13'te

teşekkür ederim. komut dosyası yerine python komut dosyasını çalıştırabilir miyim?
Meraklısı

Özel komutumu yürüttüğümü varsayalım, Kullanıcının IP adresini ve oturum açma adını almanın herhangi bir yolu var mı
Komutumun

4

Bir /etc/ssh/sshrcdosya oluşturabilirsiniz . Bkz man 8 ssh. Bunu tek bir kullanıcı için istiyorsanız kullanın ~/.ssh/rc.

/etc/ssh/sshrcBirisi makinenizde oturum açtığında size dbus yoluyla bildirim gönderecek bir örnek . Şunu unutmayın chmod +x:

#!/bin/bash

ip=`echo $SSH_CONNECTION | cut -d " " -f 1`

notify-send -u CRITICAL "SSH connection from ${ip}" "User $USER just logged in from $ip"

1

Oturum açma sırasında bir komut dosyasının yürütülmesi için, komut dosyasını / etc / profile komut dosyasından bir çağrı olarak ekleyin. Bu, yalnızca ssh oturum açma işlemleri için değil, her oturum açma işlemi için yürütülür.


Yalnızca ssh bağlantısı kullanılarak bağlanmış istemci sistemleri hakkında endişeliyim
Enthusiast

1
Tüm kabuklar kaynak / etc / profile olmadığı için farklı kabuklara sahipse bu tutarlı olarak çalışmaz.
bschlueter
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.