Linux触ってる人と会話してると「SSHすれば?」「SSHはいいぞ」とめっちゃ言われるのでUbuntuが入ったノートPCをメインノートPCでSSHできるようにした。
SSHって?
SSHとは、Secure Shell(セキュアシェル)の略語でリモートコンピュータと通信するためのプロトコルである。認証部分も含めてインターネット上の通信も暗号化されるため、安全に通信することができる
つまり、他のコンピュータやサーバにネットワーク経由で安全に遠隔操作することができる仕組みということ
実際にやってみた
まず、Ubuntuが入ってるノートPCから作業を始めます。
前提条件として
- Vimがインストール済み
- ファイアウォールが設定済み
- メインノートPCにTera Termがインストール済み
があります
1.SSHサーバーのインストール
使用するSSHサーバーのインストールを行います。この操作には、管理者権限が必要なため、rootアカウントか通常ユーザーをsudoグループに追加してください
$ sudo apt install openssh-server
$ sudo systemctl status ssh
sudo…?
→他のユーザ権限でコマンドを実行するときに使うコマンド(主にroot権限を使うときに使われるらしい)
apt…?
→Linuxのパッケージ管理システム(Debian系で標準的に使われているらしい)
2.SSHの設定変更
インストールしたてのSSHは、セキュリティが甘いです。そこでSSHの設定ファイルの内容を変更することでセキュリティを強化します。
2.1 まずはバックアップ
$ sudo su
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
2.2 設定ファイル(sshd_config)を編集
# vi /etc/ssh/sshd_config
#PermitRootLogin prohibit-password
↓
PermitRootLogin no
PermitEmptyPasswords no
Port ****(数字)
PubkeyAuthentication yes
Hostkey /etc/ssh/ssh_host_rsa_key
Hostkey /etc/ssh/ssh_host_ecdsa_key
Hostkey /etc/ssh/ssh_host_ed25519_key
(↑使うやつだけ解除でよかったかも)
PasswordAuthentication no
設定が完了したらファイルを保存して再起動
# systemctl restart ssh
3.SSH接続用の鍵を作成
パスワード認証でも可能だが、パスワードを知られると他人も接続できるようになってしまう。なので、今回は公開鍵認証を採用した。
公開鍵認証…?
公開鍵と秘密鍵で認証を行う手法。今回の場合だと、公開鍵をサーバー側、秘密鍵をメインノートPCに置き、サーバーにログインするときは、秘密鍵でメインノートPCにて署名を作成してサーバーに送る。送られた署名を公開鍵が検証し、大丈夫なら通すというような感じ
$ ssh-keygen -t ed25519 -m PEM
キーペアの保存先とパスフレーズの入力を求められるので入力
ed25519は暗号アルゴリズム
作成が終わると$ HOME/user/.sshに秘密鍵と公開鍵が作成される
公開鍵は、ファイル名と権限を変更しておく
$ cd /home/user/.ssh
$ mv id_ed25519.pub authorized_keys
$ chmod 600 authorized_keys
600は所有者のみ読み書きOK
4.接続してみる
4.1 ファイアウォールを通す
ファイアウォールを設定している人は、事前に設定してたポート番号を許可してください
$ sudo ufw allow ***
4.2 接続
ここからは、メインノートPCの作業も入ります
秘密鍵のid_ed25519ファイルをメインノートPCに移動してください
ちなみに秘密鍵は絶対に公開しないように
接続には、Tera Termを使用します
Tera Termを起動すると以下の画面になります
1. 接続するノートPCのホストアドレスを入力
2. 接続するポート番号の入力
3. 内容を確認してクリック
OKをクリックして正しく接続できるとこうなる
1. Linuxで使ってるユーザ名を入力
2. 入力したパスフレーズの入力
3. 秘密鍵ファイルを選択
4.内容を確認してクリック
これらを入力、選択して正しく接続されると
こんな感じになれば接続完了
今後の展望
次の休みにこそ、Samba使いたい