ssh 구성 파일을 사용하여 원격 명령 실행


32

입력하지 않고도 서버에 ssh 로그인으로 실행할 명령을 설정할 수 있기를 원합니다. 기본적으로 다음과 같은 ssh 구성 파일을 찾고 있습니다.

ssh host command

입력해야 할 것은 다음과 같습니다.

ssh host

명령이 실행됩니다.

답변:


16

인증 된 키 파일에 명령을 삽입 할 수도 있습니다. ( ~/.ssh/authorized_keys). 이를 통해 파일의 각 키에 대해 사용자 정의 명령을 실행할 수 있습니다. 방화벽을 통해 셸 연결을 전달하는 데 사용합니다. 결과적으로 하나의 호스트에 ssh 할 수 있고 세션을 네트워크 내부의 호스트에 자동으로 연결합니다. authorized_keys항목은 다음과 같습니다 :

command="ssh -Tq <hostname> \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA... the rest of the key ...

더 구체적으로 리디렉션은 내 gitolite 인스턴스에 대한 것입니다. 이것은 gitolite 호스트를 외부 액세스에 직접 노출시키지 않고 간단한 외부 액세스를 허용합니다. 자세한 내용은 매뉴얼 페이지를 확인하십시오. ( http://linux.die.net/man/8/sshd )


1
이것은 굉장합니다, 당신이 이것을 할 수 있다는 것을 몰랐습니다. +1
Brian Wigginton

3
authorized_keys 파일에 명령을 넣으면 rsync 및 scp와 같은 항목이 손상됩니다. 다음과 같은 결과가 나타납니다. 열린 터미널 실패 : 터미널이 아닙니다. 또한 명령이 실패하면 로그인 할 수 없습니다. 나는 이것을 어려운 방법으로 발견했다.
존 헌트

11

당신이 OpenSSH를 실행하는 경우, 그것은 모양 ~/.ssh/rc입니다 로그인시 실행 .


3
되어 /.ssh/rc클라이언트 또는 서버 시스템에있는? 서버에서 문서처럼 보이죠?
18:45에

1
예, 서버 시스템에있을 것입니다.
coneslayer

불행하게도 rc파일 등을 실행하는 데 실패 표시 screen오류 "단자에 연결해야합니다"점점
davidparks21

10

bash 별명을 설정할 수 있습니다.

.bashrc 파일에서 다음을 입력하십시오.

alias ssl='ssh some_host run_command'

그러면 호스트 이름을 입력하지 않아도됩니다.

또는 여러 호스트 에서이 작업을 수행하고 여러 별칭이 작동하지 않으면 작은 스크립트를 사용하십시오.

kevin@box:~$ cat ssl.sh
#!/bin/sh
ssh $1 some_command
kevin@box:~$

2

당신은 당신의에서이 문제를 해결 콜드 .ssh/config file추가, 당신이 명령을 실행 할 호스트를 들어,

  RequestTTY yes
  RemoteCommand <some command>

<some command>당신의 명령은 어디에 있습니까 ? 이것은 screen 또는 tmux에서도 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.