web-dev-qa-db-ja.com

22以外のポートでSSHを実行する方法

同じルーターの背後に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 = OpenSSH_5.9p1 Debian-5ubuntu1、OpenSSL 1.0.1 2012年3月14日
  • B = OpenSSH_6.0p1 Debian-4、OpenSSL 1.0.1c 2012年5月10日

Aは12.04 Ubuntuを持ち、BはRaspbianを搭載したRaspberry Piです。

編集:忘れていたもの:SSH構成ファイルを切り替えてみました(/etc/ssh/ssh_configであることがわかりました)Portの行のコメントを外し(#を削除)、変更しました22から26へ。接続拒否メッセージがまだ表示されました。 (私は無駄に再起動しました。)

135
Gary

2台目のマシンのポート26でSSHを実行していないようです。そのマシンのポート番号を26に変更できます。

/etc/ssh/sshd_configを編集し、SSHを再起動するか、22のままにしておくことを忘れずに、ルーターのポート26を2番目のマシンのポート22に転送します。また、2番目のマシンのファイアウォール設定を変更して、接続を許可することを忘れないでください。

44
Nerdfest

Linuxシステムを使用していて、ポート26でSSHサーバーに接続する場合は、次のコマンドを使用できます。

ssh [email protected] -p 26

注意:

  1. サーバーのIPをサーバーのIPアドレスまたはDNS名に置き換えます。
  2. 設定したとおりにポート番号を変更します。
  3. カスタムポートSSHを使用している場合、ファイアウォールのアウトバウンド、インバウンド接続に同じポートが最も許可されます。そうでない場合、接続は確立されません。
341
Shiv Singh

ポート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
9
H.-Dirk Schmitt

リッスンポートはIPアドレスにハードリンクすることもできます

/ etc/ssh/sshd_config:

ListenAddress 10.10.10.10:22
ListenAddress 20.20.20.20:4444
7
OasisInDesert

関連する回答 で説明したように、sshクライアントではURI形式をssh://user@Host:1234として指定できます。例えば:

ssh  ssh://[email protected]:2222

2222はポート番号です。代わりに使用する予定のポート番号に置き換えてください。もちろん、(接続しようとしているホスト上の)指定されたポートsshサーバーに接続するには、まず指定されたポートでリッスンする必要があることに注意してください

1

デフォルトのポート(TCP/22)でsshを実行することはお勧めできません。WAN IP 22からLAN IPでssh-serverを使用しているポートに転送することもできません。

より一般的な意味では、ssh-serverサービスに接続するには、そのポートでリッスンする必要があります。必ず

  1. /etc/ssh/sshd_configを編集します(dに注意)#Port 22からPort 26へ。すなわち、ポートのコメントを外して変更します。 26よりも良いのは、42895のような何かがランダムに上になることです。
  2. Ssh-serverサービスを再起動します

    Sudo systemctl restart sshd.service
    

次に、ssh-clientから接続できます

ssh user@serverNameOrIP -p 42895

ボーナス: mosh

Moshパッケージがサーバーにインストールされている場合は、使用します

mosh --ssh="ssh -p 42895" serverNameOrIP
0
Pablo Bianchi