環境
Ubuntu 18.04 LTS
openssh-server のインストール
Ubuntu 18.04 LTS では ssh クライアントはデフォルトでインストールされている。(下記のコマンドで確認可能。)
$ dpkg -l | grep ssh
ssh サーバーをインストールする。
$ sudo apt-get install openssh-server
$ dpkg -l | grep ssh # インストール完了の確認
$ ps -ax | grep ssh # サーバーが動作しているか確認
ポートの開放
Ubuntu18.04 LTS ではすべてのポートがデフォルトで閉じられているため、ufw (Uncomplicated FireWall) コマンドで使用するポートを開放する。
※下記では22番ポートを開放するが、セキュリティ上は他の番号に変更しておくのが無難。
$ sudo ufw enable # ファイアウォールの有効化
$ sudo ufw status # 現状で開放されているポートの確認
$ sudo ufw allow 22 # 22番ポートを開放
$ sudo ufw reload
$ sudo ufw status # 22番が開放されたことを確認
ssh デーモンの設定
ssh 接続で使用するポート番号を上記の ufw コマンドで開放したポート番号に変更する。
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.old # configファイルのバックアップ
$ sudo vi /etc/ssh/sshd_config
# ファイル内の下記の部分の番号を変更する
...
#Port 22
...
$ service sshd restart # sshデーモンを再起動
IPアドレスの固定
Ubuntu 18.04 LTS ではネットワーク設定は /etc/network/interfaces ではなく、 /etc/netplan/ 下に yaml ファイルとして記述する。自分の環境ではデフォルトで下記のようになっていた。
network:
version: 2
renderer: NetworkManager
これを下記のように変更。
network:
version: 2
renderer: NetworkManager
ethernets:
enp3s0:
addresses: [192.168.3.8/24, '2400:2411:c0a3:6f00:14ff:54b:28e3:1ed7/64']
gateway4: 192.168.3.255
nameservers:
addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]
記述内容の詳しい意味については以下の公式 reference および kome さんの解説記事等を参照。
下記を実行して設定内容を反映。(実行すると /etc/netplan/ 以下のすべての yaml ファイルが読み込まれる。)
$ sudo netplan apply
ssh の鍵の設定
ローカル PC で暗号鍵を生成。
$ ssh-keygen -t rsa # rsa 方式で暗号化鍵を生成
生成した公開鍵の情報を何かしらの方法でリモート PC に送信し、authorized_keys に登録。
cat id_rsa.pub >> /home/{your_username}/.ssh/authorized_keys
これで ssh 接続は可能だが毎回鍵の場所を指定するのは面倒なので、リモート PC の .ssh/config ファイルに下記の情報を記載。
Host {host}
HostName {your_hostname}
User {username_of_remote_PC}
Port 22
IdentityFile {path_to_secret_key}
これで、ssh {host}
で接続が可能。接続できない場合は下記のリンクのあたりなどを確認。