私はssh
CyberArkを介して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]#22
PsmpDblanVip.example.net
DB6164CP
ファイルを編集(または作成)~/.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
(元の問題シナリオの場合)。