同じルーターの背後に2台のコンピューターがあります。それらをAおよびBと呼びましょう。
Aは次の方法でBにSSH接続できます:ssh usr@<internal ip of computer>
Bは同じことを行うことでAにSSH接続できますが、外部IPを使用する必要があります。ルーターのポート22をコンピューターAのIPに転送したため、すべてが理にかなっています。
ただし、ポート26またはコンピューターBに転送し、両方に外部IPを使用し、ポート22または26を指定してネットワーク外部からSSHを使用して、使用するコンピューターを効果的に選択したいと思います。
Aでiptables
のOUTPUT、BでINPUTを介してポート26を許可しようとしましたが、うまくいかないようです。また、Aの22で行ったように、ポート26をBの内部IP(ルーター経由)に転送しました。
外部IPとポート26を使用してAからBにSSHしようとすると、次のようになります。
ssh: connect to Host xx.xx.xxx.xx port 26: Connection refused.
バージョン:
Aは12.04 Ubuntuを持ち、BはRaspbianを搭載したRaspberry Piです。
編集:忘れていたもの:SSH構成ファイルを切り替えてみました(/etc/ssh/ssh_config
であることがわかりました)Port
の行のコメントを外し(#
を削除)、変更しました22
から26
へ。接続拒否メッセージがまだ表示されました。 (私は無駄に再起動しました。)
2台目のマシンのポート26でSSHを実行していないようです。そのマシンのポート番号を26に変更できます。
/etc/ssh/sshd_config
を編集し、SSHを再起動するか、22のままにしておくことを忘れずに、ルーターのポート26を2番目のマシンのポート22に転送します。また、2番目のマシンのファイアウォール設定を変更して、接続を許可することを忘れないでください。
Linuxシステムを使用していて、ポート26でSSHサーバーに接続する場合は、次のコマンドを使用できます。
ssh [email protected] -p 26
注意:
ポート22は、イントラネットsshアクセスにのみ使用します。
インターネット経由でアクセスするには、カスタム(異常な)ポートを使用します。これには、ポート22で「よく知られているユーザー名」をスキャンしているスクリプトキッズによって生成される負荷を軽減できるという利点があります。
external sshdプロセスはxinetd
によって制御され、internalsshd
プロセスと並行して実行されます。次の例では、ポート12345を使用します。
これは、システムで使用可能な空きポート番号に自由に変更できます。値を大きくすると、このポートが"quick port scan"でスキャンされる可能性も少し低くなります。
xinetd
構成は次のとおりです。
service ssh-external
{
socket_type = stream
wait = no
protocol = tcp
type = UNLISTED
user = root
server = /usr/sbin/sshd
server_args = -i -f /etc/ssh/external-sshd.config
port = 12345
log_on_failure += USERID
}
ファイル/etc/ssh/external-ssdh.config
は、通常のsshd
構成のコピーにすることができます。以下のステートメントが構成されていることを確認してください。
Port 12345
AddressFamily inet
また、インターネットアクセスの公開キー認証を強制し、パスワード認証を無効にすることをお勧めします。
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
リッスンポートはIPアドレスにハードリンクすることもできます
/ etc/ssh/sshd_config:
ListenAddress 10.10.10.10:22
ListenAddress 20.20.20.20:4444
関連する回答 で説明したように、sshクライアントではURI形式をssh://user@Host:1234
として指定できます。例えば:
ssh ssh://[email protected]:2222
2222はポート番号です。代わりに使用する予定のポート番号に置き換えてください。もちろん、(接続しようとしているホスト上の)指定されたポートsshサーバーに接続するには、まず指定されたポートでリッスンする必要があることに注意してください
デフォルトのポート(TCP/22)でsshを実行することはお勧めできません。WAN IP 22からLAN IPでssh-serverを使用しているポートに転送することもできません。
より一般的な意味では、ssh-serverサービスに接続するには、そのポートでリッスンする必要があります。必ず
/etc/ssh/sshd_config
を編集します(dに注意)#Port 22
からPort 26
へ。すなわち、ポートのコメントを外して変更します。 26よりも良いのは、42895のような何かがランダムに上になることです。Ssh-serverサービスを再起動します
Sudo systemctl restart sshd.service
次に、ssh-clientから接続できます
ssh user@serverNameOrIP -p 42895
mosh
Moshパッケージがサーバーにインストールされている場合は、使用します
mosh --ssh="ssh -p 42895" serverNameOrIP