これらは私のシナリオです:
~/.ssh/id_rsa.pub
(Aから)authorized_keys
~/.ssh/id_rsa
)、これはセキュリティリスクになるためです(キーは個人用です)。ホストAのキーを使用してホストCにログインするにはどうすればよいですか?これは可能ですか?私は恐れていません。
( この質問と似ていますが異なります )
私が必要とするのは、Bのファイルシステムに触れることなく、Bのsshホップにオンザフライ(stdinまたは類似)で秘密鍵を提供する方法です。これは可能ですか?
OpenSSHの最新バージョンを使用している場合は、次のように入力するだけです。
ssh -J B C
-J
サポートのない少し古いバージョンを使用している場合は、少し複雑な構文を使用できます。
ssh -o ProxyCommand='ssh -W %h:%p B' C
AからCにsshするたびにこれが必要な場合は、.ssh/config
ファイルに次のようなエントリを追加すると便利です(最近のバージョン):
Host C
ProxyJump B
またはこのように(少し古いバージョンでは):
Host C
ProxyCommand ssh -W %h:%p B
上記のいずれかを使用すると、単にssh C
と入力して接続を開くことができます。これは、転送にssh
を利用する多くのツールの1つを介してssh
を間接的に使用している場合に特に便利です。これらのツールのすべてが、コマンドラインフラグをssh
コマンドに渡す簡単な方法を提供しているわけではありません。
それはかなり簡単です。エージェント転送(sshの-Aオプション)を使用するだけです。
サンプル:
#On machine A use
ssh -A user@<machine_B>
#Then on machine B use
ssh -A user@<machine_C>
秘密鍵をあちこちにコピーする必要はありません。 -AはSSHエージェント要求のみをチェーンの最初のマシンに転送するため、中間マシンのユーザーを切り替えない限り、マシンAの秘密鍵を使用できます。
マシンBでユーザーを変更すると(たとえば、su fooからユーザーfooへ)、エージェントの転送は機能しなくなります。これは、次の接続がユーザーfooとして独自のキーで行われるためです。