~/.ssh/id_rsa.pub
私のローカルコンピュータ上のファイルの公開SSHキーを2つの~/.ssh/authorized_keys
SSHホップから離れたリモートホストのファイルにコピーしたいと思います。つまり、localhost
sshだけがアクセス可能host1
ですが、host1
sshはアクセス可能ですhost2
。私の公開SSHキーをlocalhost
からにコピーしたいと思いますhost2
。
SSH キーを 1 ホップ離れたリモートホストにコピーするには、SSHドキュメント次のコマンドを実行します。
ssh-copy-id -i ~/.ssh/mykey user@host
単一のコマンドで2ホップ離れたコンピュータにキーをコピーする方法はありますか?
答え1
withオプションssh
に任意のオプションを渡すことができます。このオプションを使用すると、ホストをジャンプしてキーをホストにコピーできます。ssh-copy-id
-o
ProxyJump
ssh-copy-id
以下は、ジャンプホストJump.spack.orgを介してsshキーをleia.spack.orgにコピーする例です。
$ ssh-copy-id -o ProxyJump=jump.spack.org leia.spack.org
[email protected]'s password:
Number of key(s) added: 1
次に、次のようにテストします。
$ ssh -J jump.spack.org leia.spack.org
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-42-generic x86_64)
答え2
ssh-copy-idではダブルホップができないと思います。 scp を使用して、あるサーバーから 3 番目のサーバーにファイルを移動できます。男scpを見てください。ただし、Authorized_keysにテキストを配置して権限を設定するには、まだいくつかのことを行う必要があります。
しかし!
SSHを使用すると、あるサーバーから別のサーバーに移動し、そこからコマンドを実行できます。
このようなものはキーをここからそこにコピーします。送信する .ssh/id_rsa.pub キーを下の mysupersecretkeyfromhell の場所にコピーして貼り付け、名前と IP アドレスを明確に変更する必要があります。
これは最初のサーバーをスキップし、2番目のサーバーとしてSSHを介してコマンドを実行することです。
ssh -J [email protected] [email protected] echo mySupersecretKeyfromehell >> .ssh/authorized_keys && chmod 700 .ssh && chmod 600 .ssh/authorized_keys
これは、最新バージョンのSSHを実行していると仮定します。
キーを変数に入れて最後のコマンドを短くすることもできます。
下のバックティックは一重引用符ではないことに注意してください!
MYKEYVAR="echo `cat .ssh/id_rsa.pub`"
ssh -J [email protected] [email protected] echo $MYKEYVAR >> .ssh/authorized_keys && chmod 700 .ssh && chmod 600 .ssh/authorized_keys