단일 SSH 연결을 사용하여 로컬처럼 원격 서비스에 액세스

단일 SSH 연결을 사용하여 로컬처럼 원격 서비스에 액세스

로컬 시스템에 있는 것처럼 원격 호스트의 주소를 지정하기 위해 단일 SSH 터널을 만드는 것이 가능합니까? 다음 의사 예시를 입력하세요장소 상에서원하는 효과를 얻으세요.

  • 데이터베이스 복사: mysqldump remote | mysql local또는mysqldump local | mysql remote
  • 원격 파일에 텍스트를 추가합니다.echo blah >> remote:file.txt
  • 원격 파일 변경:sed ... remote:file.txt
  • 원격 명령을 실행합니다.apk add blah

단일 연결이 불가능할 경우 이러한 작업을 수행하는 가장 편리한 방법은 무엇입니까?

답변1

원격 mysql에 액세스하려면 다음을 전달하여 localhost:12345를 사용할 수 있습니다.

ssh -Nf -L 12345:localhost:3306 user@remote

파일 작업의 경우 sshfs를 통해 원격 호스트를 마운트할 수 있습니다.

mkdir /tmp/remote
sshfs user@remote:/ /tmp/remote
echo blah >> /tmp/remote/file.txt
sed ... /tmp/remote/file.txt

원격 명령 실행은 일반적으로 SSH를 통해 작동합니다.

ssh user@remote command ....

단 하나의 연결을 사용하여 이 모든 작업을 수행할 수 있습니다.이것을 ~/.ssh/config에 추가하면:

ControlMaster auto
ControlPath ~/.ssh/masters/%l%r@%h:%p

첫 번째 SSH 연결은 다음 연결에서 다시 사용하는 마스터가 됩니다. 새로운 슬레이브 연결은 매우 빠르게 제공됩니다. 초기 키 교환 오버헤드 등이 없습니다.

관련 정보