10822


ConoHaVPSを契約し, 初期設定を行っていたのですが, SSH接続ポートを22から変更することができません.  
変更直前に接続を確認する段階で, 22番ポートからは接続できるのですが, なぜか変更先ポートへの接続の場合

[code]

    ssh -p 10222 ssh-user-name@xxx.xxx.xxx.xxx
    
[/code]

とすると

[code]

    ssh: connect to host xxx.xxx.xxx.xxx port 10222: Connection refused
    
[/code]

と出て拒否されてしまいます.  
22番ポートの認証にはパスワードを使っています.

契約から今までに行った設定は

[code]

    ssh root@xxx.xxx.xxx.xxx
    - # yum update
    - # adduser -m ssh-user-name
    - # passwd ssh-user-name
    - # vim /etc/pam.d/su
    
        auth required pam_wheel.so use_uid  　← コメントアウト解除
    
    - # vim /etc/login.defs
    
        SU_WHEEL_ONLY yes  ← 追加
    
    - # visudo
    
        %wheel ALL=(ALL) ALL  ←コメントアウト済を確認
    
    - # usermod -G wheel ssh-user-name
    
         ユーザーを変更して再接続
    
    - $ sudo vim /etc/ssh/sshd_config
    
        Port 22 <- 追加
        Port 10222 <- 追加
    
    - $ sudo systemctl restart sshd
    
    - $ sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-alt.xml
    - $ sudo vim /etc/firewalld/services/ssh-alt.xml
    
        <port protocol="tcp" port="22"/> を <port protocol="tcp" port="10222"/> に変更
    
    - $ sudo firewall-cmd --reload
    - $ sudo firewall-cmd --add-service=ssh-alt
    - $ sudo firewall-cmd --permanent --add-service=ssh-alt
    
    - $ sudo firewall-cmd --list-all
        〜
        services: dhcpv6-client ssh ssh-alt を確認
        〜
    
[/code]

です.  
1回再起動もかけました.

また,

[code]

    netstat -tanp
    
[/code]

では

[code]

    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  
    〜  
    tcp        0      0 0.0.0.0:10222           0.0.0.0:*               LISTEN      -                   
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -   
    tcp6       0      0 :::10222                :::*                    LISTEN      -                   
    tcp6       0      0 :::22                   :::*                    LISTEN      -
    〜
    
[/code]

となっているのですが, 手元のPCから

[code]

    nmap -p ssh xxx.xxx.xxx.xxx
    
[/code]

とすると

[code]

    PORT   STATE SERVICE
    22/tcp open  ssh
    
[/code]

となってしまいます.

どのようにすれば, 10222番ポートからSSH接続できるのでしょうか.  
よろしくお願いします.

追記

[code]

    $ iptables -L
    
[/code]

とすると

[code]

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  anywhere             anywhere             ctstate      RELATED,ESTABLISHED
    ACCEPT     all  --  anywhere             anywhere            
    INPUT_direct  all  --  anywhere             anywhere            
    INPUT_ZONES_SOURCE  all  --  anywhere             anywhere            
    INPUT_ZONES  all  --  anywhere             anywhere            
    ACCEPT     icmp --  anywhere             anywhere            
    REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  anywhere             anywhere             ctstate   RELATED,ESTABLISHED
    ACCEPT     all  --  anywhere             anywhere            
    FORWARD_direct  all  --  anywhere             anywhere            
    FORWARD_IN_ZONES_SOURCE  all  --  anywhere             anywhere            
    FORWARD_IN_ZONES  all  --  anywhere             anywhere            
    FORWARD_OUT_ZONES_SOURCE  all  --  anywhere             anywhere            
    FORWARD_OUT_ZONES  all  --  anywhere             anywhere            
    ACCEPT     icmp --  anywhere             anywhere            
    REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         
    OUTPUT_direct  all  --  anywhere             anywhere   
    
[/code]

と表示されました.


CC BY-SA 3.0
2015-05-28T08:44:58.160
10717
2018-03-30T05:34:01.163
2018-03-30T05:34:01.163
19110
8528
question
linux centos ssh conoha
ConoHa VPS の CentOS7 における22番以外のポートからのSSH接続


コントロールパネル→サーバ詳細画面→ネットワーク情報→「接続許可ポート」が22(SSH)になってたりして。


CC BY-SA 3.0
2015-05-28T14:44:46.817
10731
2015-05-28T14:44:46.817
9917
10717
answer


Connection refusedなので、iptables でフィルタリングされているのだと思います。

[code]

    iptables -L
    
[/code]

と実行すると以下のようになっていませんか？

[code]

    # iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
    ACCEPT     icmp --  anywhere             anywhere
    ACCEPT     all  --  anywhere             anywhere
    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination
    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    
[/code]

ConoHaはこのように22番ポート以外の通信はフィルタリングされる設定になっています。以下のように10022番ポートをACCEPTすると通信できるようになると思います。

[code]

    iptables -I INPUT 5 -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
    
[/code]


CC BY-SA 3.0
2015-05-28T14:50:11.377
10732
2015-05-28T14:50:11.377
7651
10717
answer


/etc/ssh/sshd_configのPort 22のすぐ上に  
# if you want to change the port on a SELinux system, you have to tell  
# SELinux about this change.  
# senamage port -a -t ssh_port_t -p tcp #PORTNUMBER  
というコメントがありますが、これはやられたのですか？  
これに該当していると思われますが。


CC BY-SA 3.0
2015-05-30T00:35:39.440
10781
2015-05-30T00:35:39.440
8136
10717
answer


すみません、タイトルをちゃんと見ていませんでした。CentOS7なのですね。  
だとするとiptablesではなくてfirewalldを使います。

firewalldでも10022番ポートがフィルタリングされている状況は同じです。/usr/lib/firewalld/services/ssh.xmlに以下のようにポート10022の設定を追加して、firewalldをリロードしてみてください。

[code]

    <port protocol="tcp" port="22"/>
    <port protocol="tcp" port="10022"/>         <== 追加
    
[/code]

以下のコマンドでリロード

[code]

    # firewall-cmd --reload
    
[/code]


CC BY-SA 3.0
2015-05-31T14:49:28.243
10822
2015-05-31T14:49:28.243
7651
10717
answer


手順通りやると、iptables でもしっかりポートは空くはずで、問題ないように見えるのでなかなか厄介ですね。  
`netstat -tanp`
の結果、10222番ポートが空いているようですが、もしかして、これは再起動前の話で、再起動後は22番ポートだけ、となってたりしませんか？  
もしそうだとすれば、以下のどちらか (あるいは両方) の可能性が考えられます。

### 可能性1: sshd を sshd.socket 経由で起動する設定になっていた

`systemctl status sshd` (あるいは `systemctl status sshd.service`)の結果が disabled で、
`systemctl status sshd.socket` の結果が enabled なら、ポートを空けるのは sshd ではなく systemd
の仕事になっていますので、`/etc/ssh/sshd_config` の設定ではなく、 `systemd.socket` の設定を変更する必要があります。

[code]

    $ sudo cp /usr/lib/systemd/system/sshd.socket /etc/systemd/system/
    $ sudo vim /etc/systemd/system/systemd.socket
    
    (ListenStream=22 の記述の直下に ListenStream=10222 という行を追加)
    
    $ sudo systemctl daemon-reload
    
[/code]

### 可能性2: SELinux が有効になっていた (が、設定時には無効になっていた)

SELinux が有効になっている場合、sshd が 10222 番ポートを空けられるよう設定しなければなりません。これを行っていなければ、許可されている
22 番ポートのみ空けるのに成功し、10222 番ポートは失敗します。  
これで 10222 番ポートが空けられなかった場合、 `systemctl status sshd` や `journalctl`
でその旨のログを見ることができます。

[code]

    $ sudo semanage port -a -t ssh_port_t -p tcp 10222
    
[/code]

とすることで、sshd がポートを空けることを許可できます。もし `semanage` コマンドがなければ'、`sudo yum install
policycoreutils-python`。  
なお、これは、可能性1のように、sshd.socket を使う設定になっていた場合でも必要になります。


CC BY-SA 3.0
2015-06-01T13:51:20.870
10853
2015-06-01T13:51:20.870
7831
10717
answer