ユーザーに基づいて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番目の接続がシームレスに認証されていることを確認する必要があります。
このため、exec
ssh 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