ルーターの背後にあるマシンでSSHサーバーを生成しようとしています。
まず、SSHをパブリックIPアドレスにバインドしようとしました。
ssh -R 10002:localhost:22 <ip_address>
次に、パスワードの要求を求められますが、ユーザー名のパスワードが機能していないようです。
明らかに私は自分のユーザー名パスワードを知っているので、同じネットワーク上の別のコンピューターで認証しようとしているように見えます。
これを修正する方法の提案はありますか?
また、ルーターにアクセスできない場合に、ルーターの背後にSSHサーバーを作成する方法についての代替案も役立ちます。
Iptablesのポートはすべて開いています。
[〜#〜]更新[〜#〜]
Thomas Oster 回答で示唆されているように、私は次のことを試しました。
ルーターの背後にあるマシンで、次のコマンドを実行しました。
$ ssh -R10002:localhost:22 <remote_public_ip_address> -l <my_remote_server_username>
<remote_ip_address>
私が完全に制御できるパブリックIPおよびSSHサーバーを備えたサーバーのremote_ip_addressです。
<my_remote_server_username>
リモートサーバーのユーザー名です。
その後、次のようにリモートサーバーからルーターの背後にあるサーバーに接続しようとしました。
$ ssh -p 10002 <remote_public_ip_address>
ただし、このコマンドは次の出力を表示します。
ssh: connect to Host <remote_public_ip_address> port 10002: Connection refused
そこで、次のコマンドを使用して、iptablesファイアウォールで10002ポートを開きました。
Sudo iptables -A INPUT -p tcp --dport 10002 -j ACCEPT
その後、コマンドを再度実行しましたが、同じエラーメッセージが表示されます。
ルーターの背後にある私のマシンでは、iptablesですべてのポートを開いています。
UPDATE 2
Remove_public_ip_addressサーバーの/ etc/ssh/sshd_configでポート転送を許可する必要があります
このコマンドを追加して、sshd_configファイルでポートフォワーディングを許可しようとしました。
LocalForward 10002 <my_remote_public_server_ip>:22
しかし、それは私にこのエラーメッセージを与えました:
Bad configuration option: LocalForward
「ssh-R ....」の後、ウィンドウを開いたままにしましたか?
そのコマンドを実行した後、リモートのパブリックマシンに接続し、はい、ウィンドウを開いたままにしました。
トンネルが作成された後、パブリックサーバーでssh -p 10002 localhostを使用できますか?
はい、パブリックサーバーでそのコマンドを実行すると、資格情報を要求された後に接続されます。
ルーターの背後にあるマシンで「sshlocalhost」を試して、sshdが実行され機能しているかどうかを確認してください。
これも機能します。
UPDATE 3
私はついにそれを機能させることができました(ありがとう Thomas Oster )
3台のマシンで作業します。
宛先マシン:接続したいマシン。
ミドルマシン:接続の仲介役として機能するサーバー(私の場合はLinode)
ホームコンピューター:宛先マシンにアクセスする場所。
これらは私が従ったステップです
ステップ1:
[destination computer]$ vi /etc/ssh/sshd_config
GatewayPortsオプションを追加します。
GatewayPortsはい
Sshを再起動します。
ステップ2:
[destination computer]$ ssh -R 4040:localhost:22 middle-machine-user@middle-machine-public-ip
これにより、パブリックマシンがポート4040を介して宛先コンピューターにリンクされます。
ミドルマシンに接続し、ターミナルにプロンプトを表示します。このタブは開いたままにしておく必要があります。
ステップ3:
自宅から接続する:
ssh destination-user@destination-ip -p4040
または、中間のマシンから接続します。
[home computer]$ ssh middle-machine-user@middle-machine-ip
[middle computer]$ ssh destination-user@localhost -p4040
パブリック「ip_address」で実行されているsshサーバーはありますか?あなたがしようとしているのは、「「ip_address」へのssh接続を開いてから、ポート10002での着信要求をlocalhost:22にトンネリングする」ことです。
「ip-address」がdsl-routerのパブリックIPアドレスである場合は、ルーターの構成でHost:22へのポート転送を作成する必要があります。
ルーターにアクセスできない場合、考えられる唯一のことは、インターネットでsshを実行している別のサーバーにアクセスでき、そこからトンネリングできる場合です。
# open a session to the public available machine and create a tunnel from port 10002 back to your local sshd (22)
ssh -R 10002:localhost:22 ip_of_public_server
# as long as this session is open, all calls to the public available machine on port 10002 will be tunneled to your local machine (make sure sshd is running on port 22)
ssh -p 10002 ip_of_public_server
あなたが言ったように、私たちは「宛先マシン」(sshを使用して接続したい場所)、「ミドルマシン」(フォワーダーとして機能するパブリックサーバー)、「他のコンピューター」(ネット上の他のコンピューター)を持っています
@ thomas-osterが言ったように、あなたは使用しなければなりません
[destination computer] $ ssh -R 2222:localhost:22 ip_of_public_server
ただし、トンネルをlocalhostではなく0.0.0.0にバインドするには、「ミドルマシン」(パブリックサーバー)の/ etc/ssh/sshd_configにあるGatewayPortsを使用する必要があります。
GatewayPorts yes
もちろん、このオプションを追加した後、sshdを再起動する必要があります。
説明については http://www.snailbook.com/faq/gatewayports.auto.html をお読みください:「デフォルトでは、SSHはループバックアドレスの転送されたポートへの接続のみをリッスンします」
これにより、中間マシン(パブリックサーバー)のIPを使用して、ネット上の任意のコンピューターから宛先コンピューターに接続できるようになります。
[any computer on the net] $ ssh -p 2222 ip_of_public_server
パブリックサーバーのファイアウォールがポート2222/tcpへの接続を許可していることを確認してください。
私は最近同じ問題に遭遇しましたが、SSHサーバーに対するroot権限がありませんでした。
前述のように、ネットワークのクライアントもSSHサーバーのリモート転送ポートに接続できるように_GatewayPorts yes
_が必要です。デフォルトでは、no
に設定されています。したがって、root権限がない場合は、SSHD設定を変更してGatewayPorts
オプションをtrue
に設定することはできません。ただし、その場合は、次の回避策を使用できます。
_ssh -R 4041:localhost:22 myserver.com 'socat TCP-LISTEN:4040,fork TCP:127.0.0.1:4041'
_
socat は、インターフェイス_4040
_のTCPポート_0.0.0.0
_をバインドする優れたネットワークユーティリティです。これにより、ネットワークから表示され、すべてのトラフィックがにリダイレクトされます。 SSHDがリッスンしてクライアントのポートにリダイレクトする_127.0.0.1:4041
_ _22
_。
したがって、誰かが(クライアントで)説明したようにポート22でローカルSSHに接続したい場合、彼は次のことを行います。
_ssh -p 4040 myserver.com
_
そしてそれはこのように機能します:
SSH client --> myserver.com:4040 (socat) --> 127.0.0.1:4041 (myserver.com, SSHD) --> SSH client port 22
socat ソースからビルドすることも、システムにすでにインストールされていることもできます。これは、RHEL/CentOSのRPMForgeリポジトリに存在します(ただし、root権限がない場合は、インストールできません)。