CentOS7でSSHを利用できるようにする方法

今回はCentOS7でSSHを利用する方法を紹介します。

 

サーバー設定

1:openssh-serverをインストール

以下のコマンドでopenssh-serverがインストールされているか確認しましょう。

# yum list installed | grep ssh

 

もしインストールされていなかったら、以下のコマンドでインストールします。

# yum -y install openssh-server

 

2:設定を確認

先にsshd_configの設定を確認しておきます。

以下のコマンドを入力。

# vim /etc/ssh/sshd_config

 

確認しておくべき設置は以下の通り。

  • Port:SSHの接続を受けるポート番号。今回はデフォルト値を使用するので#でコメントアウトしておきましょう。
  • PermitRootLogin:rootユーザーでログインするか。今回はno
  • PasswordAuthentication:パスワードを指定するか。今回はyes

 

3:起動

sshdを起動します。

以下のコマンドを入力。

# systemctl start sshd.service

 

状態を確認しておきましょう。問題なければ次へ進みます。

# systemctl status sshd.service

 

4:ファイアウォールの設定

sshを使うためのポートが解放されているか一応確認します。

# firewall-cmd --list-all

services の欄に ssh が入っていれば大丈夫です。

入っていなかった場合は以下のコマンドで追加することができます。

# firewall-cmd --permanent --add-service=ssh

 

5:新規ユーザーを作成

rootユーザーは今回使用しないので、SSHでログインするためのユーザーを新しく作成します。

useraddコマンドで新規ユーザーを追加します。

# useradd ユーザー名

 

このユーザーにパスワードを設定します。

# passwd ユーザー名
New password: 任意のパスワード
Retype new password: もう一度パスワードを入力

 

サーバー設定はこれで終わりです。

 

クライアント設定

1:openssh-clientsをインストール

以下のコマンドでopenssh-clientsがインストールされているか確認しましょう。サーバー側の時と同じコマンドですね。

# yum list installed | grep ssh

 

インストールされていなかったら以下のコマンドでインストールします。

# yum -y install openssh-clients

 

2:SSH接続を実行

早速SSHを試してみます。ユーザー名の後にはサーバーのIPアドレスを入力するようにしましょう。

$ ssh ユーザー名@IPアドレス

 

以下のような画面になったらSSH接続成功です。

[testuser@???-???-???-??? ~]$

 

SSHを終了する場合はexitを入力します。

 

エラー対処

接続拒否

ssh: connect to host ???.???.???.??? port 22: Connection refused

こんな感じの画面になる場合はファイアウォール設定がうまくいっていないです。

ファイアウォールの設定をもう一度見直してみてください。

また、VirtualBoxなどのVMを使用している場合はポートフォワーディングの設定も気をつけましょう。

 

権限拒否

Permission denied, please try again.

ユーザー名やパスワードが間違っているか、そもそもユーザーが作られていなかったのが原因です。

サーバー側で以下のコマンドを入れてユーザー一覧を確認してみてください。ここに作成したユーザーが存在しない場合、ユーザーが作られていなかったことになります。もう一度作ってみましょう。

vim /etc/passwd

 

タイムアウト

ssh: connect to host IPアドレス port 22: Connection timed out

sshdのポート設定とファイアウォールのポート設定が食い違っているとこのエラーが表示されます。

firewall-cmdのservices-sshは22番ポートに固定されているので、services-sshのポート番号を変更します。

サーバー側で以下のコマンドを入力してファイアウォール設定のファイルを開きましょう。

# vim /usr/lib/firewalld/services/ssh.xml

 

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22"/>
</service>

 

最後のport=”22″の部分をsshd_configのPortと同じ番号にしましょう。

そうしたらfirewalldをリロードします。

# systemctl reload firewalld.service

 

これでservices-sshのポート番号は変更されました。

もし変更されない場合は以下のコマンドを試してみてください。

# systemctl start sshd.service