SSH에 로그인하고 프로그램을 실행하는 단일 명령?


58

SSH를 통해 원격 서버에 로그인하고 원격 로그인 쉘에서 프로그램을 실행하는 단일 명령을 구성하는 방법이 있습니까?

OpenSSH 매뉴얼에서 "명령이 지정되면 로그인 쉘 대신 원격 호스트에서 실행됩니다."라고 읽습니다. 예를 들어 ssh user@server mail원격 서버에 로그인하고 사서함 상태를 표시 한 다음 로컬 셸로 돌아갑니다. 메일 상태를 표시 한 후 원격 셸을 유지하는 방법이 있습니까?

또한 ssh user@server [command]명령이 프로그램 (예 : vim 또는 mutt)이면 작동하지 않는 것 같습니다. 프로그램 중에 원격 쉘에 머무르는 동안 프로그램을 종료 한 후 원격 SSH에 로그인하고 프로그램을 실행하는 방법이 있습니까 logout(일반 SSH 세션에서와 같이) 특정 명령 에서만 마지막으로 종료 됩니까?

결국 로컬 .bashrc에 별칭과 같은 명령을 입력하여 원할 때 빠르게 실행할 수 있기를 원합니다. 예를 들어 SSH를 통해 원격 서버에 로그인하고 원격 서버에서 mutt를 열어 전자 메일을 읽거나 보내는 것이 있습니다.


메일 상태를 표시 한 후 원격 셸을 유지한다는 것은 무엇을 의미합니까? mail 명령을 실행 한 후 ssh를 수행하는 것과 같지 않습니다 ssh remote@server mail ; ssh remote@server. 또한 터미널이 필요한 원격으로 실행되는 명령은 ssh에서 살아남거나 작동하지 않습니다.
mkc

글쎄, 그것은 명령을 실행 한 다음 원격 셸을 얻는 데 효과가있는 것처럼 보이지만 하나의 SSH 연결을 열고 명령을 실행하고 SSH 연결을 닫은 다음 다른 SSH 연결을 열어서 수행합니다. 하나의 첫 번째 연결로이 모든 것을 할 수있는 방법이 있습니까? 또한이 명령으로 프로그램을 실행할 수는 없습니다.
user981178

답변:


90

시도 했습니까 ssh -t user@server "mail && bash"(또는 bash원하는 쉘로 바꾸십시오 )?

-tbash가 대화식 쉘로 사용할 의사 -tty를 만들려면 이 옵션 이 필요합니다.


1
비록 인정할 것이지만 아마도 또는 mutt내부에서 실행하는 것을 선호 하고 마음대로 첨부하고 다시 연결할 수 있으며 원하는만큼 추가 쉘을 실행할 수 있습니다. tmuxscreen
jsbillings

1
글쎄, 나는이 명령으로 다양한 행동을 찾고 있습니다. 위와 같이 (답변에서) 사용 된 경우에도 사서함 상태 만 표시 한 다음 로그 아웃하지만 연결이 닫 혔음을 표시합니다. 위와 같이 사용하지만 메일과 같이 nano와 함께 nano를 사용하면 nano 세션이 열리고 종료하면 원격 bash 쉘로 돌아가고 exit대신에 종료해야 합니다 logout. 아직 mutt (또는 이와 유사한)로 테스트 할 수 없습니다.
user981178

-t옵션으로 보안 문제가 발생합니까? 나는 이것을 전에 사용하지 않았다.
user981178

내가 아는 한 -t는 보안 문제를 일으키지 않습니다. 당신은 교체 시도 &&로모그래퍼 ;?
brm

종료 상태가 0이 아닌 명령은 쉘 논리로 인해 두 번째 명령이 실행되지 않게합니다.
jsbillings
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.