Xftp(Xshell, Xftp: 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 서버에 접속할 수 있습니다.
...
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
Xftp 세션 생성
SFTP 설정
호스트 정보는 Bastion 서버여야 합니다. 그리고 ‘설정’을 누릅니다.
'사용자 정의 SFTP 서버 사용 기능' 적용
빨강 박스 안은 sftp subsystem 경로입니다. 이는 서버 OS마다 다르므로 /etc/ssh/sshd_config 파일을 참고하여 지정합니다.
Ubuntu 계열: /usr/lib/openssh/sftp-server
Redhat, CentOS, Rocky 계열: /usr/libexec/openssh/sftp-server
...
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
Xshell 세션 파일 생성
빨강 박스 안 sftp subsystem 경로입니다. 자세한 내용은 위 'Xftp에서 접속할 때' 참조합니다.
세션 실행 후 툴바에서 Xftp를 실행합니다.
...