以下を使用してリバースSSHトンネルを設定しました。
ssh -R 22100:127.0.0.1:22 remoteuser@remotehost
マシン1から。本機はキーを使ってリモコンで認証します。
リモートホストは次のsshd_configオプションを使用します。
...
PubkeyAuthentification yes
PasswordAuthentification no
...
これは、リモートサーバーがキーを認識する3番目のシステムでは正常に機能します。つまり、トンネルが最初に設定されたマシン1の正しいログインを使用しますssh remoteuser@remotehost -p 22100
。
ただし、リモートサーバーで認識されているキーを持たない4台目のコンピュータにログインしようとすると、まだパスワードの入力を求められます。つまり、4番目のマシンでは次のようになります。
ssh remoteuser@remotehost
# returns Permission denied (publickey)
ssh remoteuser@remotehost -p 22100
# is asking for password for remoteuser@remotehost
リバーストンネルポートに接続しようとしたときにパスワードオプションが表示されるのはなぜですか?それでもパスワードがうまくいかないようです。鍵が認識されない場合にパスワードを求める機能も無効にするにはどうすればよいですか?
答え1
トンネルが確立されると、「remotehost」のポート22100へのすべての接続は「マシン1」のポート22への接続になります。特に、このポートがssh remoteuser@remotehost -p 22100
「4番目のマシン」で実行されている場合はさらにそうです。したがって、重要なパラメータは、「マシン1」のポート22で実行されるsshdのパラメータです。
OPは、システムがリモートuser@remotehostのパスワードを要求することを示していますが、これは要求された接続が要求する内容を反映しています。 SSHプログラムは、ポート22100が転送されていることを知りません。ただし、確認しているホストキーは、「リモートシステム」ではなく、「システム1」のホストキーです。既知のホストデータベース(通常〜/.ssh/known_hosts)はポートとホストと共にキーを格納するため、これはすべて機能します。