SSH 연결 후 서버에서 자동으로 스크립트 실행


11

클라이언트 시스템이 서버와 SSH 연결을 설정 한 직후 서버에서 자동으로 스크립트를 실행하는 방법

예를 들어 : 사용자가 ssh 연결을 사용하여 다른 시스템 (lan을 통해 연결된)에서 내 컴퓨터에 로그온한다고 가정합니다. 그 때, 시스템에서 스크립트 (python 또는 shell)를 자동으로 실행하여 유효성 검사를 수행해야합니까?

서버 시스템에서 스크립트를 자동으로 실행하는 방법은 무엇입니까?


답변:


14

구성 파일 (/ etc / ssh / sshd_config)에 다음 매개 변수를 추가하면됩니다.

 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.

다른 옵션은 사용자별로 .ssh / rc 파일을 사용하는 것입니다.

ForceCommand 메소드를 사용하려면 ForceCommand /usr/bin/ownscript파일 맨 아래 /etc/ssh/sshd_config(서버)에 추가 하면됩니다 .

스크립트는 다음과 같습니다.

#!/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

스크립트를 chmod하는 것을 잊지 마십시오 sudo chmod +x /usr/bin/ownscript


답변 해주셔서 감사합니다. 예를 들어 주시겠습니까?
Enthusiast

그러나 강제 명령이 서버 (관리자 로그인) 또는 클라이언트 로그인에서 명령을 실행할지 여부? 서버 로그인에서 명령을 실행하고 싶습니다
Enthusiast

1
서버에서 명령이 발행됩니다. 구성 맨 아래에 ForceCommand /path/command.script를 추가하면 트릭이 수행됩니다. 그러나이 명령을 실행하면 스크립트 파일에서 쉘을 시작해야합니다. 가독성을 높이기 위해 원래 답변에 예를 추가하겠습니다.
Requist

감사합니다. 쉘 스크립트 대신 파이썬 스크립트를 실행할 수 있습니까?
매니아

사용자의 IP 주소와 로그인 이름을 검색 할 수있는 방법이 있나요 내가 내 사용자 지정 명령을 실행 가정 (I 때문에 어느 나의 명령이 실행되었다에게 로그인 알고 싶어?
매니아

4

/etc/ssh/sshrc파일을 만들 수 있습니다 . 참조하십시오 man 8 ssh. 단일 사용자에게이 기능을 원하면을 사용하십시오 ~/.ssh/rc.

다음은 /etc/ssh/sshrc누군가가 컴퓨터에 로그인 할 때 dbus를 통해 알려주 는 샘플 입니다. 잊지 마세요 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

로그온 중에 스크립트를 실행하려면 / etc / profile 스크립트 내에서 호출로 추가하십시오. 이것은 ssh 로그온뿐만 아니라 모든 로그온에 대해 실행됩니다.


나는 SSH 연결을 사용하는 경우에만 클라이언트 시스템에 대해하여 연결된 우려하고있다
매니아

1
사용자가 모든 쉘 소스 / etc / profile이 아닌 다른 쉘을 사용하는 경우 일관되게 작동하지 않습니다.
bschlueter 5
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.