SSHは透過的に次のサーバーにジャンプします。

SSHは透過的に次のサーバーにジャンプします。

ユーザーに基づいてSSH接続を何とかリダイレクトできますか?

たとえば、ホスト1、ホスト2という3つのプロキシマシンがあります。

ユーザーjohnがプロキシ(ssh john@proxy_ip)にログインし、自動的にhost1にログインし、ユーザーalice(ssh alice@proxy_ip)が自動的にhost2にログインするようにします。

ユーザーは自分がどこにリダイレクトされているのかわかりません。したがって、ssh -J john@proxy_ip john@host1 は解決策ではありません。

SSHにこれらのオプションはありますか?どんな提案がありますか?

答え1

カスタム「シェル」を使用して、プロキシホストの各ユーザーアカウントを構成できます。これは実際には、特定のバックエンドホストの特定のユーザーアカウントへのSSH接続を確立するスクリプトです。

これらのスクリプトは基本的に次のようになります。

#!/bin/sh
exec ssh ${USER}@hostX  #replace hostX with actual host name here

これをシェルに設定するには、各ターゲットホストのスクリプトを一覧表示し、/etc/shellsプロキシホストのユーザーアカウントに割り当てる必要があります。

chsh -s /usr/local/bin/ssh-to-host1 john
chsh -s /usr/local/bin/ssh-to-host2 alice

これを行う場合は、プロキシ->hostXジャンプ用のSSHキーも設定するか、2番目の接続がシームレスに認証されていることを確認する必要があります。

このため、execssh to hostXが起動した後に戻るシェルプロセスがないため、sshセッションが終了すると、ユーザーも自動的にエージェントからログアウトされます。

ターゲットホストはまだ実際のホスト名を表示するため、これは完璧ではありません(「Spartacus」を選択し、すべてのホスト名をプロキシホストと同じに設定して他の問題を引き起こす可能性がある場合を除く)。

答え2

これを行うには、.ssh/configリダイレクトするユーザーアカウントを編集します。したがって、/home/alice/.ssh/config次のようになります。

Host proxy_ip
 User alice
 HostName host2

そして/home/john/.ssh/config

Host proxy_ip
 User john
 HostName host1

関連情報