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.