SSH는 사용자 이름/호스트 이름 조합을 허용하지만 SCP는 이를 허용하지 않는 이유는 무엇입니까?

SSH는 사용자 이름/호스트 이름 조합을 허용하지만 SCP는 이를 허용하지 않는 이유는 무엇입니까?

저는 sshCyberArk를 통해 Linux 호스트에 로그인하는 데 익숙합니다. 이것이 사용자 이름/호스트 이름 조합이 다음과 같은 이유입니다.DB6164@DB6164CP#[email protected]#[email protected]

다음 ssh명령이 유효합니다:

$ /usr/bin/ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no DB6164@DB6164CP#[email protected]#[email protected]

그러나 다음 scp명령은 실패합니다.

$ /usr/bin/scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no DB6164@DB6164CP#[email protected]#[email protected]:/tmp/file.txt file.txt
DB6164@DB6164CP#[email protected]#22: invalid user name

호스트 이름에서 "#"을 제거하면 scp불평이 중지되지만 CyberArk는 실패합니다.

scp또한 URI 형식을 사용해 보았습니다 scp://[user@]host[:port][/path].

$ /usr/bin/scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no scp://DB6164@DB6164CP#[email protected]#[email protected]/tmp/file.txt file.txt
scp://DB6164@DB6164CP#[email protected]#[email protected]/tmp/file.txt file.txt: invalid uri

하지만 이것도 실패했다.

scp실패하고 언제 ssh성공하며 위 scp명령을 작동시키려면 어떻게 해야 합니까?

고쳐 쓰다: 여러 호스트(CyberArk를 통해 연결됨)에 대해 위 작업을 수행해야 합니다.

답변1

scp -o User='foo@bar@baz#quux' host:/rpath lpath

scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
  -o User='DB6164@DB6164CP#[email protected]#22' \
  PsmpDblanVip.example.net:/tmp/file.txt file.txt

답변2

실용적인 솔루션으로 요청한 질문에 따라 이 대상에 대한 기본 매핑을 설정할 수 있으며 이는 모든 ssh전송 사용을 단순화합니다.

이를 사용자와 CyberArk 에이전트로 분할하겠습니다. 최종 대상 호스트가 정확하지 않은 경우 그에 따라 아래 예를 조정하세요.DB6164@DB6164CP#[email protected]#[email protected]DB6164@DB6164CP#[email protected]#22PsmpDblanVip.example.netDB6164CP

파일을 편집(또는 생성) ~/.ssh/config하고 파일 끝에 다음을 추가합니다.

########################################################################
# CyberArk proxy
#
Host DB6164CP
        UserKnownHostsFile /dev/null
        StrictHostKeyChecking no
        Hostname PsmpDblanVip.example.net
        User DB6164@DB6164CP#[email protected]#22


########################################################################
# Default
#
Host *
        ForwardX11 yes
        ForwardX11Trusted yes
        Compression yes
        ServerAliveInterval 60

이러한 설정은 이전에 명시적으로 정의 및 일치되지 않은 모든 연결에 사용되므로 기본 호스트에 대한 설정을 조정해야 할 수도 있습니다. (첫 번째 Host로 일치하는 부분이 사용된 부분입니다.)

이 구성을 완료한 후에는 간단히 대상을 참조할 수 있습니다 DB6164CP.

ssh -n DB6164CP id
scp -p /etc/hosts DB6164CP:/tmp/my_hosts

항목에 추가 호스트 이름과 패턴을 추가할 수 있으므로 Host동일한 프록시 호스트를 통과하는 대상이 여러 개인 경우 이를 정의할 수 있습니다.

Host DB6164CP OTHER*
        UserKnownHostsFile /dev/null
        StrictHostKeyChecking no
        Hostname PsmpDblanVip.example.net
        User %r@%h#[email protected]#22

다음과 같이 대상을 참조하십시오.

ssh DB6164@DB6164CP
ssh someOtherUser@OTHERhost1      # Or: ssh -l someOtherUser OTHERhost1
scp DB6164@DB6164CP:file.txt .    # Or: scp -l DB6164 DB6164CP:file.txt

필요에 따라 %r및 를 사용할 수 있습니다 %h. 항상 고정된 사용자 이름이 있지만 호스트가 가변적인 경우 대신 고정 문자열을 입력하세요 %r(원래 문제 시나리오의 경우).

관련 정보