
シェル スクリプトを使用して、ジャンプ サーバーから複数のサーバーに SSH キーを送信しようとしています。AD アカウントからログインして、その後 root に切り替えることしかできず、root として直接ログインすることはできません。このような状況で、/root/.ssh/authorized-keys の下にコピーする必要があるサーバーに SSH キーを送信するにはどうすればよいでしょうか。
答え1
他のサーバーに root としてアクセスするために、ジャンプ サーバーで root になる必要はありません。
ssh 設定ファイルがまだない場合は、まずこれを作成します。このファイルは通常、~/.ssh/config
(~ は $HOME の省略形) に存在します。
まず最初に知っておく必要があるのは、ジャンプ サーバーからアクセスしようとしているサーバーの IP 範囲です。それらの IP がジャンプ サーバーと同じサブネットにないことが望まれます。
以下にサンプルを示します。
# save as ~/.ssh/config
CheckHostIP no
StrictHostKeyChecking no
AddKeysToAgent yes
ForwardAgent yes
UserKnownHostsFile /dev/null
# Servers to get to via jump server
# (note their subnet defined by a range using an asterisk, you need to provide)
# This establishes root as login id for every server in the range
# and uses the JumpServer (can leave that name as is) as a proxy.
Host 192.168.122.*
ProxyJump JumpServer
User root
# JumpServer info. Provide its IP or FQDN and your user id
# IP or FQDN set in the HostName; you can leave Host set as JumpServer
# since this is referred to above in ProxyJump line
Host JumpServer
HostName ip-or-fqdn-of-jumpserver
User your-user-id
上記のサンプルでは、環境に合わせて変更する必要があるのは次の 3 つの点だけです。
192.168.122.*
サーバーのIP範囲に置き換えますip-or-fqdn-of-jumpserver
ジャンプサーバーのIPまたはFQDN(完全修飾ドメイン名)に置き換えます。your-user-id
SSH接続に使用したジャンプサーバーのユーザーIDに置き換えます
ファイルが作成されると、以下のコマンドを使用して、すべてのサーバーのルート authorized_keys ファイルに公開キーを配置できますssh-copy-id
。もちろん、最初は資格情報を提供する必要がある場合があります。
また、デフォルトでは、ほとんどのサーバーは ssh ルートへの直接アクセスを禁止するように設定されています。その場合は、各サーバーで sshd_config をさらに変更する必要があります。
次に、実行して、ssh-copy-id 192.168.122.10
公開キーをサーバーのルート authorized_keys ファイルにコピーします。もちろん、IP を自分のサーバー IP に置き換えます。各サーバーで繰り返します。
ssh some-server-IP
各サーバーにキーが存在すると、ユーザー ID を使用してジャンプ サーバーに自動的に接続され、リモート サーバーに root としてアクセスするためのポート転送が確立されるはずです。