いつもブログをご覧くださり、ありがとうございます。
少し前から、Linux/ Ubuntu の物理マシンを導入して、サーバー用途で使っています。その時に色々試したトピックをこのブログでもご紹介します。
Ubuntu Serverをファイルサーバーとして利用するため、Sambaの設定を変更する必要がありました。
Ubuntu Server本体で直接操作することもできますが、せっかくなので普段使用しているMacからSSHで接続し、リモートでUbuntu Serverを操作できる環境を作ってみました。
今回は、MacからUbuntu ServerへSSH接続するまでの手順を備忘録としてまとめます。
実際に作業してみると、最初は Connection refused というエラーで接続できませんでした。その際に行った対処についても紹介します。
この記事について
本記事に掲載しているユーザー名、IPアドレス、ホスト名などは、実際の環境とは異なる説明用の値に置き換えています。
ご自身の環境に合わせて読み替えてください。
目次
今回の環境
今回使用する環境は、説明上以下のようにしています。
- 接続元:Mac
- 接続先:Ubuntu Server
- Ubuntuのユーザー名:
user01 - Ubuntu Serverのホスト名:
ubuntu-server - Ubuntu ServerのIPアドレス:
192.168.1.100 - 接続方法:SSH
- SSHポート:22番
Ubuntu ServerのIPアドレスは、LAN内で固定して使用しています。
SSHとは?
SSH(Secure Shell)は、ネットワーク経由で別のコンピューターへ安全に接続し、リモート操作するための仕組みです。
今回の場合は、
Mac
↓ SSH
Ubuntu Server
という形で接続します。
SSH接続ができるようになると、Ubuntu Server本体のキーボードやディスプレイを操作しなくても、MacのターミナルからUbuntu Serverのコマンドを実行できます。
Ubuntuのユーザー名を確認する
SSHで接続するためには、Ubuntu Serverのユーザー名が必要です。
Ubuntu Server側で以下のコマンドを実行します。
whoami
例えば、
user01
と表示された場合、SSH接続に使用するUbuntuユーザーは user01 です。
Ubuntu ServerのIPアドレスを確認する
続いてUbuntu ServerのIPアドレスを確認します。
hostname -I
例えば、
192.168.1.100
と表示されたとします。
このIPアドレスをMacからのSSH接続に使用します。
ファイルサーバーなどとして継続的に使用する場合は、IPアドレスが変わらないように固定IPアドレスを設定するか、ルーター側でDHCP予約を設定しておくと管理しやすくなります。
MacからUbuntu ServerへSSH接続してみる
MacにはSSHクライアントが標準で用意されているため、ターミナルからSSHコマンドを実行できます。
Macで「ターミナル」を起動し、以下のコマンドを実行します。
ssh user01@192.168.1.100
基本的な書式は、
ssh ユーザー名@接続先IPアドレス
です。
SSH ServerがUbuntu側ですでに動作していれば、これだけで接続できます。
しかし今回、実際に試した際には次のエラーが表示されました。
ssh: connect to host 192.168.1.100 port 22: Connection refused
Ubuntu Server側がSSH接続を受け付けていないようです。
「Connection refused」と表示された場合
Connection refused になったため、Ubuntu Server側でSSHサービスの状態を確認しました。
sudo systemctl status ssh
今回の環境では、SSH接続を受け付けるためのOpenSSH Serverがインストールされていませんでした。
そこで、OpenSSH Serverをインストールします。
OpenSSH Serverをインストールする
まずUbuntu Serverのパッケージ情報を更新します。
sudo apt update
続いてOpenSSH Serverをインストールします。
sudo apt install openssh-server
インストール後、SSHサービスの状態を確認します。
sudo systemctl status ssh
今回の環境では、以下のような状態になっていました。
ssh.service - OpenBSD Secure Shell server
Loaded: loaded
Active: inactive (dead)
TriggeredBy: ssh.socket
Active: inactive (dead) と表示されているため、一見するとSSHが動作していないように見えます。
しかし、その下に、
TriggeredBy: ssh.socket
と表示されています。
そこで ssh.socket の状態も確認してみます。
ssh.socketの状態を確認する
以下のコマンドを実行します。
sudo systemctl status ssh.socket
今回の環境では、
Active: active (listening)
となっていました。
さらに、
Listen: 0.0.0.0:22 (Stream)
[::]:22 (Stream)
と表示されています。
これはSSHの標準ポートである22番ポートで接続を待ち受けている状態です。
Ubuntuのバージョンや構成によっては、systemdの「socket activation」という仕組みによって ssh.socket が接続を待ち受け、SSH接続が必要になったときにサービスを起動する構成になっている場合があります。
そのため、
ssh.service → inactive (dead)
という表示だけを見て「SSHが動いていない」と判断するのではなく、
ssh.socket → active (listening)
になっているか確認することもポイントです。
なお、systemctl status の表示画面から通常のコマンド入力画面へ戻る場合は、キーボードの q を押します。
22番ポートを確認する
さらに確認したい場合は、Ubuntu Server側で以下を実行します。
sudo ss -tlnp | grep :22
22番ポートが、
LISTEN
の状態になっていれば、SSH接続を待ち受けています。
ファイアウォールも確認する
SSHが起動しているのに接続できない場合は、Ubuntu Serverのファイアウォールも確認します。
UFWを使用している場合は、
sudo ufw status
で状態を確認できます。
UFWが有効になっていて、SSHが許可されていない場合は、
sudo ufw allow OpenSSH
でSSH通信を許可できます。
設定後、再度状態を確認します。
sudo ufw status
SSHの22番ポートが許可されていることを確認します。
Macからもう一度SSH接続する
Ubuntu Server側でSSHの待ち受けを確認できたので、Macへ戻ります。
もう一度ターミナルから、
ssh user01@192.168.1.100
を実行します。
今回は正常にUbuntu Serverへ接続できました。
初回接続時の確認
初めてUbuntu ServerへSSH接続する場合、
The authenticity of host '192.168.1.100' can't be established.
...
Are you sure you want to continue connecting (yes/no/[fingerprint])?
のような確認が表示されることがあります。
接続先が自分のUbuntu Serverで間違いないことを確認して、
yes
と入力します。
続いて、Ubuntuユーザーのパスワードを求められます。
user01@192.168.1.100's password:
Ubuntu Serverの user01 に設定しているパスワードを入力してEnterを押します。
なお、ターミナルでパスワードを入力している間は、画面上には文字も ***** も表示されません。
何も入力されていないように見えますが、そのままパスワードを入力してEnterを押します。
SSH接続できていることを確認する
接続に成功すると、Macのターミナル上の表示が、例えば、
user01@ubuntu-server:~$
のようになります。
現在ログインしているユーザーを確認してみます。
whoami
今回の例では、
user01
と表示されます。
IPアドレスも確認できます。
hostname -I
今回の例では、
192.168.1.100
が含まれていれば、目的のUbuntu Serverへ接続できています。
これでMacからUbuntu Serverをリモート操作できるようになりました。
SSH接続後は何ができる?
SSHで接続できれば、Ubuntu Server本体を直接操作しなくても、Macのターミナルからさまざまな管理作業ができます。
今回SSHを設定した目的は、Ubuntu Serverで構築したSambaファイルサーバーの設定変更でした。
例えばSambaの設定ファイルは、
sudo nano /etc/samba/smb.conf
としてMacから編集できます。
設定ファイルを変更する前には、
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
のようにバックアップを作成しておくと安心です。
今回もMacからSSH接続した状態で smb.conf を編集し、Sambaの設定変更を行いました。
SSH接続を終了する
Ubuntu Serverでの作業が終わったら、
exit
を実行します。
SSH接続が終了して、Mac側の通常のターミナルに戻ります。
まとめ
今回はMacからUbuntu ServerへSSH接続できる環境を構築しました。
基本的な接続方法は、
ssh ユーザー名@Ubuntu ServerのIPアドレス
です。
今回の例では、
ssh user01@192.168.1.100
となります。
ただし、実際に作業した際には最初、
Connection refused
となり、接続できませんでした。
Ubuntu Server側へOpenSSH Serverをインストールし、ssh.socket が22番ポートで active (listening) になっていることを確認したところ、Macから正常に接続できるようになりました。
SSHが利用できるようになると、Ubuntu Server本体のキーボードやディスプレイを操作しなくても、普段使用しているMacからサーバーを管理できます。
今回はSambaの設定変更を行うためにSSHを利用しましたが、Ubuntu ServerをファイルサーバーやWebサーバーなどとして運用する場合にも、SSHによるリモート管理は便利です。

