Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


PROBLEM DESCRIPTION or QUESTION

...

Xftp(Xshell: Private Key A) ---> Bastion Server(Public key of A, Private Key B ) --->Target(Public key of B )

개인 키 B를 Xshell(Xagent)에서 서비스할 수 있다면 Jumphost 기능을 통해서 Target 서버로 바로 접속이 가능해서 터미널 작업 및 파일 전송을 할 수 있지만, 정책적으로 혹은 다른 이유로 개인 키 B를 Xshell이 사용할 수 없는 경우입니다.

명령어를 입력할 수 있는 터미널이 제공되는 환경이라면 Bastion 서버에서 SSH 명려으로 Target에 접속할 수 있습니다. 터미널이 없는 파일 전송 프로그램이라면 다음과 같은 설정을 통해서 Target 서버에 접속할 수 있습니다.

Xftp에서 직접 접속할 때

  1. Bastion 서버에서 스크립트 파일 생성

    Code Block
    user@bastion: ~$ vi ssh2target.sh
    #!/bin/bash
    keyfile=~/.ssh/id_ecdsa
    keypass=*****
    command="$1"
    eval $(ssh-agent) >/dev/null &&(expect >/dev/null << EOF
    spawn ssh-add ${keyfile}
    expect "Enter passphrase"
    send "${keypass}\r"
    expect eof
    EOF
    )&& ssh -A test@ubuntu2204 ${command}; kill -9 $SSH_AGENT_PID

  2. Xftp 세션 생성

    1. SFTP 설정

      image-20241106-072244.pngImage Added
    2. '사용자 정의 SFTP 서버 사용 기능' 적용

      image-20241106-072427.pngImage Added

      빨강 박스 안 sftp subsystem 경로입니다. 이는 서버 OS마다 다르므로 /etc/ssh/sshd_config 파일을 참고하여 지정합니다.

      • Ubuntu 계열: /usr/lib/openssh/sftp-server

      • Redhat, CentOS, Rocky 계열: /usr/libexec/openssh/sftp-server

Xshell에서 Xftp를 호출할 때

  1. Bastion 서버에서 스크립트 파일 생성. 위 'Xftp에서 접속할 때'와 같은 스크립트입니다.

    Code Block
    user@bastion: ~$ vi ssh2target.sh
    #!/bin/bash
    keyfile=~/.ssh/id_ecdsa
    keypass=*****
    command="$1"
    eval $(ssh-agent) >/dev/null &&(expect >/dev/null << EOF
    spawn ssh-add ${keyfile}
    expect "Enter passphrase"
    send "${keypass}\r"
    expect eof
    EOF
    )&& ssh -A test@ubuntu2204 ${command}; kill -9 $SSH_AGENT_PID
  2. Xshell 세션 파일 생성

    image-20241106-073413.pngImage Added

    빨강 박스 안 sftp subsystem 경로입니다. 자세한 내용은 위 'Xftp에서 접속할 때' 참조합니다.

  3. 세션 실행 후 툴바에서 Xftp를 실행합니다.

    image-20241106-073624.pngImage Added

Xshell에서 바로 Target 서버로 접속

  1. Bastion 서버에서 스크립트 파일 생성. 위 'Xftp에서 접속할 때'와 같은 스크립트입니다.

    Code Block
    user@bastion: ~$ vi ssh2target.sh
    #!/bin/bash
    keyfile=~/.ssh/id_ecdsa
    keypass=*****
    command="$1"
    eval $(ssh-agent) >/dev/null &&(expect >/dev/null << EOF
    spawn ssh-add ${keyfile}
    expect "Enter passphrase"
    send "${keypass}\r"
    expect eof
    EOF
    )&& ssh -A test@ubuntu2204 ${command}; kill -9 $SSH_AGENT_PID
  2. Xshell 세션의 로그인 스크립트 기능 이용

    image-20241106-074015.pngImage Added