SSH 구성은 자동으로 원격 명령을 실행합니다.

SSH 구성은 자동으로 원격 명령을 실행합니다.

VPN에서 SSH를 통해 서버에 연결하고 있습니다. 프로젝트를 변경하려면 서버에 액세스한 후 항상 동일한 프로세스를 수행합니다. project_user로 로그인합니다. 왜냐하면 저는 sh셸을 얻었지만 프로젝트 파일에 대한 쓰기 액세스 권한이 없기 때문입니다.

LocalCommand내 ~/.ssh/config 파일에서 매개변수를 사용하여 프로세스를 자동화 하려고 합니다 .

LocalCommand sudo -iu project_user bash

그런 다음

LocalCommand /bin/sh -c sudo -iu project_user bash

그러나 이 중 아무것도 바뀌지 않았습니다. 연결한 후에도 여전히 셸에 있었고 sh위 명령을 계속해서 실행해야 했습니다.

어떤 아이디어가 있나요?


업데이트: 죄송합니다. 이 LocalCommand 매개변수는 원격 명령이 아닌 로컬 명령에 적용됩니다. 서버에 연결한 후 원격 명령을 실행할 수 있는 ssh_config 매개변수가 있습니까?
아니면 적어도 bash init 스크립트를 통해 명령을 실행할 수 있도록 쉘을 bash로 변경하시겠습니까?

답변1

OpenSSH 서버를 사용하면 명령을 SSH 키와 연결할 수 있습니다. 특정 SSH 키를 사용하여 서버에 연결할 때 서버는 클라이언트가 요청한 명령을 무시하고 해당 키와 관련된 명령을 실행합니다. 이러한 세션에서 SSH 키를 사용하는 경우 이 기능을 사용하여 sudo 명령을 실행할 수 있습니다.

서버에 있는 계정의 "authorized_keys" 파일을 통해 이를 설정할 수 있습니다. 이것sshd(8) 매뉴얼 페이지Authorized_keys 파일 형식을 설명합니다. 간단히 말해서,authorized_keys는 각각 다음으로 시작하는 일련의 줄입니다.

ssh-rsa AAAAB3NzaC1yc2...

줄 앞에 명령 지시문을 추가할 수 있습니다.

command="sudo -iu project_user bash" ssh-rsa AAAAB3NzaC1yc2...

해당 키로 인증되면 SSH 서버는 SSH 클라이언트가 요청한 명령을 무시하고 대신 지정된 명령을 실행합니다. sudo 프로세스(및 그 안에서 실행 중인 셸)가 종료되면 ssh 세션이 닫힙니다.

이 서버에 ssh용 키 두 개를 설정하는 것이 좋습니다. 하나는 이 sudo 작업을 수행하고 다른 하나는 수행하지 않습니다. 서버에 들어가야 할 수도 있습니다.아니요때때로 sudo 작업을 수행하십시오. sudo를 실행하는 데 사용되는 키는 적어도 서버에 더 복잡한 설정이 없으면 scp 또는 sftp를 실행하는 데 작동하지 않습니다.

답변2

이름에서 알 수 있듯이 LocalCommand명령은 원격(서버) 컴퓨터가 아닌 로컬(클라이언트) 컴퓨터에서 실행됩니다. 서버에서 실행하는 명령은 ssh옵션과 호스트 이름 뒤에 전달하는 인수입니다.

기본적으로 명령어를 전달할 때 터미널이 생성되지 않으므로 옵션을 전달하여 -t터미널을 생성합니다. 대신 다음 ssh yourserver을 실행하십시오.

ssh -t yourserver exec sudo -iu project_user

답변3

원격 시스템에 로그인할 수 있으면 거기서 기본 셸을 변경할 수 있습니다.

chsh -s /bin/bash

관련 정보