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


151

同じルーターの背後に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を使用して、使用するコンピューターを効果的に選択したいと思います。

iptablesAの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 configファイルを切り替えてみました(そうだとわかりまし/etc/ssh/ssh_config#)行のコメントを外し(を削除し)にPort変更22しました26。接続拒否メッセージがまだ表示されました。(私は無駄に再起動しました。)


2番目のマシンのポート22または26でSSHを実行していますか?
Nerdfest

1
/ etc / ssh / ssh_configはsshクライアントの構成であることに注意してください。どことしては、/ etc / ssh / sshd_configは、 SSHデーモンの設定です。
-steakunderscore

回答:


45

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

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


ああ...だからsshd_configはssh_configではなく変更する必要がありますか?
ゲイリー

2
正しい。sshdはサービスです(dはデーモン用)。構成ファイルを(sudo geditで)編集し、「sudo service ssh restart」でサービスを再起動します。
Nerdfest

2
問題を解決しました。ファイアウォールの設定を変更する必要もありませんでした。
ゲイリー

371

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

ssh user@192.168.1.1 -p 26

注意:

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

17
これは正しいものとしてマークする必要があります。
ken_oy

1
これが正しい答えであることに同意します。これは簡単で、要点を説明します。
m4l490n

1
@garyはこれを正しいものとしてマークします
悲しみの詩

7
いいえ、これは正しい答えではありません。OPは、デーモンが目的のポートをリッスンしないという問題を抱えていました。彼は、SSHサーバーやNAT構成についての助けを明確に求めましたが、現在の回答では元の投稿を無視し、OPに既に知られているクライアントコマンドオプションについて説明しています。この答えがどうして多くの賛成票を得たのだろうか。
nnovich-OK

2
これは大多数にとって正しいことですが、OPの問題に対しては正しくありません。
Ultrasonic54321

9

ポート22は、イントラネットsshアクセスにのみ使用します。

インターネット経由でアクセスするには、カスタム(異常な)ポートを使用します。これには、ポート22で「よく知られているユーザー名」をスキャンしているスクリプトキッズによって生成される負荷を軽減できるという利点があります。

外部のsshdプロセスはによって制御されxinetdかつ並列に実行されている内部 sshdプロセス。次の例では、ポート12345を使用します。

これは、システムで使用可能な任意の空きポート番号に自由に変更できます。値を大きくすると、このポートが「クイックポートスキャン」によってスキャンされる可能性が少し低くなります。

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

7

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

/ etc / ssh / sshd_config:

ListenAddress 10.10.10.10:22
ListenAddress 20.20.20.20:4444

これは、答えではなくコメントでなければなりません。
パブロPazos

1

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

ssh  ssh://myuser@mydomain.com:2222

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


0

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

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

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

    sudo systemctl restart sshd.service
    

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

ssh user@serverNameOrIP -p 42895

ボーナス: mosh

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

mosh --ssh="ssh -p 42895" serverNameOrIP
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.